Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中使用xpath检索列表元素_Python_Selenium_Xpath - Fatal编程技术网

在python中使用xpath检索列表元素

在python中使用xpath检索列表元素,python,selenium,xpath,Python,Selenium,Xpath,我不熟悉SeleniumXPath,下面是我尝试过的代码。它根本不进入循环。我认为这条路是对的。有人能帮忙吗?提前谢谢 a = driver.find_elements_by_xpath('//*[@class="one"]/ul/li') for li in a: xval = driver.find_element_by_xpath('.div/text()')` 你好 你好 再见 在selenium中,通过xpath()查找元素方法应返回WebElement,但不返回

我不熟悉SeleniumXPath,下面是我尝试过的代码。它根本不进入循环。我认为这条路是对的。有人能帮忙吗?提前谢谢

a = driver.find_elements_by_xpath('//*[@class="one"]/ul/li')
for li in a:
     xval =  driver.find_element_by_xpath('.div/text()')`

  • 你好
  • 你好
  • 再见

selenium
中,通过xpath()查找元素
方法应返回
WebElement
,但不返回文本内容

试着替换

xval = driver.find_element_by_xpath('.div/text()')

还要注意,您应该使用
/div
而不是
.div
来匹配当前元素的直接子元素
div

更新

如果循环不进行迭代,请尝试等待,
DOM
中出现required
div
,因为它可能是动态生成的:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By. XPATH, "//div[@class="one" and ./ul/li])))

可以通过查询父元素来搜索子元素。还要检查父元素的长度,它有什么吗

a = driver.find_elements_by_xpath('//*[@class="one"]/ul/li')
print len(a)
for li in a:
     xval =  li.find_element_by_xpath('div/text()')

非常感谢。我做了那些改变。但它并没有首先进入循环。为什么呢?
a = driver.find_elements_by_xpath('//*[@class="one"]/ul/li')
print len(a)
for li in a:
     xval =  li.find_element_by_xpath('div/text()')