Нажмите (), функции отправки Keys () недоступны для поиска элемента по пути x - PullRequest
0 голосов
/ 26 апреля 2020

Я использую Python версию 3.8.2 с селеном 3.14.1.

Я новичок как в Python, так и в Selenium. Я использую Pycharm для написания своих скриптов автоматизации.

Когда я пытаюсь использовать команду driver.find_elements_by_xpath().click(), опция click () не отображается в раскрывающемся списке.

То же самое click() опция доступна, если я использую driver.find_element_by_name or driver.find_element_by_id команды.

Поиск элементов по имени

Поиск элементов по id

Как мы можем решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Добавление для ответа выше. Вы можете использовать список для хранения webelements и l oop через них при выполнении действий. Что-то в java.

List<WebElement> elements = driver.findElements(By.id("001"));
for(WebElement ele:elements) {
                ele.click();
}
0 голосов
/ 26 апреля 2020

Цитировать документацию Selenium :

Чтобы найти несколько элементов (эти методы вернут список):

  • find_elements_by_name
  • find_elements_by_xpath
  • ...

Вы не можете позвонить .click on driver.find_elements_by_xpath(), поскольку driver.find_elements_by_xpath() возвращает список элементов, а не один элемент.

Предположим, driver.find_elements_by_xpath() возвращает 10 элементов. Что вы хотите сделать с этими 10 элементами? Нажмите на первый? Нажмите на последний? Нажмите на все из них?

Если вы хотите найти только один элемент, использующий XPath, используйте вместо него driver.find_element_by_xpath() (примечание, нет s после element).

Документация На странице, на которую я ссылался, перечислено 8 способов поиска одного элемента на странице. Все эти методы, кроме find_element_by_id, имеют соответствующий метод для возврата нескольких элементов, имя которых отличается только заменой element на elements. (Не существует метода find_elements_by_id, потому что id s должны быть уникальными: никогда не должно быть более одного элемента с одинаковыми id.)

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