首页 > 解决方案 > 无法使用 webdriver 从 xpath 拆分一个单元格的表中获取数据

问题描述

无法从一个单元格的拆分表中获取数据,谢谢!

Python代码

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("url")
print driver.find_element_by_xpath('//html/body/div/div[3]/table/tbody/tr[1]/td[4]/p[1]/span').text
print driver.find_element_by_xpath('//html/body/div/div[3]/table/tbody/tr[1]/td[4]/p[1]/i').text
print driver.find_element_by_xpath('//html/body/div/div[3]/table/tbody/tr[1]/td[4]/p[2]').text

预期结果

5    1-1/2    14.34

错误信息:

Unable to locate element: //html/body/div/div[3]/table/tbody/tr[1]/td[4]/p[1]/span

但实际上这些数据存在于表中

标签: pythonselenium-webdriverxpath

解决方案


您的代码是正确的,但您的代码在页面完全加载之前检查元素。您可以做的最简单的事情是添加wait条件。

在下面的代码中,驱动程序轮询 HTML 20 秒以加载要加载的元素。在检查元素是否存在之前,它并没有完全等待整个 20 秒,而是等待元素加载 20 秒,然后它会抛出一个NoSuchElementException

from selenium import webdriver

driver = webdriver.Firefox()
driver.implicitly_wait(20) # seconds

driver.get("url")
print(driver.find_element_by_xpath('//html/body/div/div[3]/table/tbody/tr[1]/td[4]/p[1]/span').text)
print(driver.find_element_by_xpath('//html/body/div/div[3]/table/tbody/tr[1]/td[4]/p[1]/i').text)
print(driver.find_element_by_xpath('//html/body/div/div[3]/table/tbody/tr[1]/td[4]/p[2]').text)

推荐阅读