Как выбрать один из дубликатов тегов на странице в Java в Selen Webdriver - PullRequest
0 голосов
/ 19 марта 2019

Я использую Selenium WebDriver, у меня есть количество элементов на странице, и каждый элемент на странице имеет отдельный тип формы.

Я сохранил все эти элементы формы в списке, и я перебираюкаждый элемент в попытке получить имя элемента с помощью атрибута «alt».

Однако, когда я пытаюсь получить атрибут «name» из элемента ввода, он всегда возвращает первый найденный тег вводана этой странице, а не атрибут имени элемента, который я выбрал в настоящий момент.

Синтаксис, который я использую:

((Webdriver imgtags.get(i)).findelement(By.xpath("//input[@name='qty']")).sendKeys ("100");

Я также пытался получить идентификатор из тега с помощьюиспользуя:

((Webdriver imgtags.get(i)).getAttribute("id");

Возвращается пустое значение, но оно должно возвращать значение атрибута id в этом входном теге.

Я также пытался получить идентификатор с помощью .bytagname, нопоскольку id является атрибутом, он недоступен

Ответы [ 2 ]

1 голос
/ 20 марта 2019

Попробуйте:

(driver) findElement(By.xpath("//*[contains(local-name(), 'input') and contains(@name, 'qty')]")).sendKeys("100");

Чтобы ответить на комментарий @rrd: если честно, я понятия не имею, почему OP использует ((Webdriver imgtags.get (i)). Я не знаю, что это такое. Обычно я просто использую driver.findElement [...]

Надеясь, что он знает, что работает в его рамках: D

0 голосов
/ 19 марта 2019

Обработка Selenium Xpath не полностью совместима и не всегда рассматривается // как синоним потомка или самого себя.

Вместо этого попробуйте настроить код для использования следующего Xpath:

 ((Webdriver imgtags.get(i)).findElement(By.xpath("./descendant-or-self::input[@name='qty']")).sendKeys("100");

Это будет основывать ваш поиск на выбранном в данный момент WebElement, а затем искать любых потомков, которые имеют атрибут name со значением "qty".

Я бы также предложил сохранить ваш массив imgtags в виде массива.WebElement, например

List<WebElement> imgtags = new ArrayList<>();

Это гораздо лучшая идея, чем приведение к WebDriver, чтобы иметь возможность использовать .findElement ().Это может вызвать проблемы в будущем.

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