найти элемент внутри элемента selenium python chrome драйвер - PullRequest
0 голосов
/ 30 января 2020

Я сталкиваюсь с проблемой, когда пытаюсь получить элемент внутри элемента. Я попробовал 2 метода для достижения этой цели, но, к сожалению, не добился успеха.

element_list = driver.find_elements_by_xpath("//div[@class='WGGO WKFO']//ul//li[@class='WO0F WHHO WI5 WF2F']//div[@class='WP0F WN0F']//div[@class='WDQY']//ul[@class='WHDR WCQY']")

Код выше получить весь список элементов DOM.

Метод 1:

for element in element_list:
    element_text = element.find_element_by_xpath("//div[@class='WP0F WN0F']//div[@class='WDQY']//ul[@class='WHDR WCQY']").text
    print(element_text)

когда я пробовал это, он всегда возвращал мне текст первого элемента вместо соответствующего текста элемента.

во время поиска я нашел ссылку, где кто-то спросил то же, что и я.

Selenium Webdriver, находящий элемент в подэлементе

, когда я пытался p0deje's Ответ, он дает мне пустой массив.

element_text = element.find_elements_by_xpath(".//div[@class='WP0F WN0F']//div[@class='WDQY']//ul[@class='WHDR WCQY']").text

Результат: []

Пожалуйста, предложите мне, что я могу сделать, чтобы добиться этого, Как я могу получить детализацию элемента внутри элемента?

Ответы [ 2 ]

1 голос
/ 30 января 2020

проблема с вашим кодом в этой строке: element_text = element.find_elements_by_xpath(".//div[@class='WP0F WN0F']//div[@class='WDQY']//ul[@class='WHDR WCQY']").text ist, который находит элементы, перенастраивает список, а список не имеет атрибута .text. попробуйте перебрать возвращенный список:

elements = driver.find_elements_by_xpath("//div[@class='WGGO WKFO']//ul//li[@class='WO0F WHHO WI5 WF2F']//div[@class='WP0F WN0F']//div[@class='WDQY']//ul[@class='WHDR WCQY']")
#as a list comprehention
element_text= [element.text for element in elements]
#or as a for loop
element_text=[]
for element in elements:
    element_text.append(element.text)
0 голосов
/ 30 января 2020

element_list уже содержит все элементы, которые вы хотите напечатать, т.е. element_text. Вы не можете использовать WebElement, чтобы найти себя, причина, по которой он не потерпел неудачу с NoSuchElementException, заключается в том, что при использовании xpath для поиска элемента из другого элемента вам необходимо указать текущий контекст .

find_element_by_xpath('.//div')

Итерация по element_list

for element in element_list:
    print(element.text)

Или, если вы действительно хотите разделить его, потому что у вас есть больше действий в родительском списке, которые вы можете использовать (обратите внимание, что она сокращена element_list xpath)

element_list = driver.find_elements_by_xpath("//div[@class='WGGO WKFO']//ul//li[@class='WO0F WHHO WI5 WF2F']")
for element in element_list:
    element_text = element.find_element_by_xpath(".//div[@class='WP0F WN0F']//div[@class='WDQY']//ul[@class='WHDR WCQY']").text
    print(element_text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...