В Selenium Webdriver, как получить элемент ввода после текста? - PullRequest
0 голосов
/ 16 мая 2018

В моем случае есть несколько устаревших веб-сайтов, на которых не все входы имеют атрибут id установлен правильно. Такие как это:

<div class="form-group">
    <label>Amount</label>
    <input id="unreasonablename" type="text" value=""></input>
</div>

Но люди-тестировщики все еще могут проверить это, введя значение количества во входе сразу после "Суммы". Я бы хотел, чтобы веб-драйвер делал то же самое:

webDriver.inputAfter("Amount", 100); //I do not want to use "unreasonablename" to find the input.

Но как найти элемент ввода после текста «Сумма»? Спасибо.

Здесь есть относительный вопрос: В Selenium Webdriver, как получить текст после элемента? . Но я не знаком с xpath и не знаю, может ли мое дело быть решено таким же образом.

Ответы [ 4 ]

0 голосов
/ 17 мая 2018

вы можете написать какой-то общий метод, как показано ниже.Его можно использовать для всех необходимых полей, передавая имя метки и входное значение в качестве аргумента

void enterInputAfterLabel(String labelname,String value){
driver.findElement(By.xpath("//label[text()='"+labelname+"']]/input")).sendKeys(value);
}
0 голосов
/ 16 мая 2018

Вы можете попробовать следующий_сиблинг как

webDriver.findElement(By.xpath("//*[text()='Amount']/following-sibling::Input"));
0 голосов
/ 16 мая 2018

попробуйте это:

driver.findElement(By.xpath("//label[text()='Amount']/following-sibling::input")).sendKeys("amount to be sent");
0 голосов
/ 16 мая 2018

Чтобы найти элемент <input> сразу после текста Сумма , вы можете использовать метод findElement() вместе со стратегией Locator следующим образом:

webDriver.findElement(By.xpath("//label[contains(.,'Amount')]//following::input[1]"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...