2017-10-09 123 views
0

我在iMac(OS:Sierra)上运行Python 3.6。我使用ChromeDriver 2.33和最新版本的Selenium软件包(来自PIPY)。我试图访问(使用find_element_by_xpath)的表行的列的元件,如下所示:python selenium chromedriver xpath“no such element”

HTML Code

我可以访问前三个单元格(TH代码)嵌入的行(TR标签)的内部。当我到第四单元(TH标签)的铬驱动程序报告(通过Python)“没有这样的元素”。

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

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

我不知道这个问题是什么?或者至少我想就如何调试这个建议?


响应于评论:我使用下面蟒呼叫

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


与Firefox & geckodriver替换铬:这似乎是与Chrome的界面问题。 Firefox按预期工作,不会有其他更改。

+0

什么是你用你的电话得到的前三个单元格?为了调试,我会通过检查,如果你能使用find_elements_by_tag_name(或任何蟒蛇该呼叫使用,我用C#)来获取所有TR元素开始。创建一个函数来获取与TR标签页上的所有元素,并将它们打印到控制台,以确保所有返回,然后从那里走。 – JOberloh

回答

0

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

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

相关问题