当我尝试在元素中获取元素时,我遇到了一个问题。我尝试了 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 元素列表列表。
方法一:
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
结果:[]
请建议我该怎么做才能实现这一点,如何获取元素内的元素详细信息?
你的代码在這行有問題: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)
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)