查找元素驱动程序中的元素

2024-09-30 22:16:19 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图将元素放入元素中时,我面临一个问题。我尝试了两种方法来实现这一点,但不幸的是没有成功

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 finding an element in a sub-element

当我尝试p0deje's回答时,它给了我一个空白数组

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

结果:[]

请建议我如何实现这一点,如何在元素内部获得元素细节


Tags: 方法textdiv元素byelementfindul
2条回答

element_list已保存所有要打印的元素,即element_text。您不能使用WebElement来定位自身,它之所以没有使用NoSuchElementException失败,是因为当使用xpath从另一个元素定位元素时,您需要指定当前上下文.

find_element_by_xpath('.//div')

element_list上迭代

for element in element_list:
    print(element.text)

或者,如果您确实想拆分它,因为您可以使用父列表上的更多操作(注意,她缩短了element_listxpath

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)

这行代码的问题是: element_text = element.find_elements_by_xpath(".//div[@class='WP0F WN0F']//div[@class='WDQY']//ul[@class='WHDR WCQY']").text查找元素的列表返回一个列表,而列表没有.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)

相关问题 更多 >