Локатор селена для <маркирует для = “x”>

С ASP.NET идентификаторы тега довольно энергозависимы так для создания моих тестов более устойчивыми, я хочу определить местоположение элементов их текстами метки. Я играл некоторых с WatiN, и он делает это отлично, но что проект кажется довольно мертвым в наше время, таким образом, я думал, что изучу Селен также, прежде чем я выберу платформу.

У меня есть HTML, который выглядит примерно так

<label for="ctl00_content_loginForm_ctl01_username">Username</label>:
<input type="text" id="ctl00_content_loginForm_ctl01_username" />

Я не хочу вводить:

selenium.Type("ctl00_content_loginForm_ctl01_username", "xxx");

Это слишком уверено в идентификаторе. В WatiN я записал бы:

browser.TextField(Find.ByLabelText("Username")).TypeText("xxx");

Существует ли способ сделать это в Селене?

11
задан Johan Levin 8 January 2010 в 21:00
поделиться

2 ответа

Я думаю, что вы можете сделать это со следующим:

selenium.Type(selenium.getAttribute("//label[text()='Username']/@for"), "xxx");

Бит text()='Имя пользователя' получает нужную вам метку по своему внутреннему HTML, затем /@for возвращает вам значение своего атрибута "for".

Берегись: это не протестировано (извините за это!), но я думаю, что это сработает, основываясь на некоторых инструментах в плагине IDE

.
7
ответ дан 3 December 2019 в 05:34
поделиться

Вот вид высокого уровня...

Интерфейсы играют большую роль в концепции Скрытие информации .

Они в основном помогают скрыть детали реализации вашего класса, так что вызывающий класс не имеет зависимости от этой реализации. Поэтому с помощью интерфейсов можно изменять реализацию без изменения класса вызова. Все это по очереди ограничивает сложность вашего кода и облегчает обслуживание в долгосрочной перспективе.

Когда я впервые начал понимать интерфейсы, они были объяснены мне как «контракт, который предоставляет описание вашего класса». Не уверен, что это поможет вам, но если вы думаете об интерфейсе для автомобиля, вы можете сказать, что он ездит , ломается , и поворачивается . До тех пор, пока я попаду из точки A в пункт B, мне не нужно знать, как реализованы эти функции.

-121--829861-

Значение NULL < T > реализовано как структура, а структуры являются типами значений.

-121--2434093-

Да, для идентификации элемента можно использовать локаторы XPath, CSS или DOM. В этом примере XPath может выглядеть как//lable [@ for = 'ctl00 _ content _ loginForm _ ctl01 _ username'], чтобы идентифицировать эту метку.

1
ответ дан 3 December 2019 в 05:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: