python selenium chromedriver xpath“没有这样的元素”

时间:2017-10-09 20:40:34

标签: python html selenium xpath selenium-chromedriver

我在iMac(操作系统:Sierra)上运行Python 3.6。我使用ChromeDriver 2.33和最新版本的Selenium包(来自PIPY)。我正在尝试访问(使用find_element_by_xpath)表格行的列元素,如下所示:

HTML Code

我可以访问嵌入行内的前三个单元格(TH标签)(TR标签)。当我到达第4个单元格(TH标签)时,chrome驱动程序报告(通过python)“没有这样的元素”。

在尝试访问该元素之前,我在加载页面后等待了几秒钟(同样,我可以为此行多余的单元格1-3),所以这显然不是时间问题。

Web元素(单元格#4)在Web浏览器中可见。另外,我使用chrome开发人员中的web元素搜索功能来检查xpath(它检查出来就好了)。显然,问题不在于元素不可见。

我想知道问题是什么?或者至少我想要一些关于如何调试它的建议?

回应评论:我使用以下python调用

  

CHROMEDRIVER.find_element_by_xpath( “// * [@ ID =” mainContent_ugReservationGrid_tableGridParent “] /格1 /表/ THEAD / TR [3] /第[INDEX]”)”   其中'INDEX'是我的循环变量.. 1-3工作正常,但循环时   变量变为4我得到异常“No Such Element”。

将Firefox替换为Firefox& geckodriver:这似乎是Chrome界面的一个问题。 Firefox无需任何其他更改即可按预期工作。

1 个答案:

答案 0 :(得分:0)

如果您在引用其他表格单元格时没有遇到时序问题,那么进一步验证您用于该元素的xpath是值得的,这是您似乎无法达到的元素。

即使我倾向于主要通过Chrome运行我的所有自动化,我仍然会偶尔使用Firefox和FirePath插件来挑选/验证页面上的定位器。这个插件特别有用,它会产生给定定位器的所有匹配。自动化可能失败(或至少表现得不可预测)的一个原因是定位器可能有多个匹配。