我在iMac(操作系统:Sierra)上运行Python 3.6。我使用ChromeDriver 2.33和最新版本的Selenium包(来自PIPY)。我正在尝试访问(使用find_element_by_xpath
)表格行的列元素,如下所示:
我可以访问嵌入行内的前三个单元格(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无需任何其他更改即可按预期工作。
答案 0 :(得分:0)
如果您在引用其他表格单元格时没有遇到时序问题,那么进一步验证您用于该元素的xpath是值得的,这是您似乎无法达到的元素。
即使我倾向于主要通过Chrome运行我的所有自动化,我仍然会偶尔使用Firefox和FirePath插件来挑选/验证页面上的定位器。这个插件特别有用,它会产生给定定位器的所有匹配。自动化可能失败(或至少表现得不可预测)的一个原因是定位器可能有多个匹配。