2017-10-09 115 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插件來挑選/驗證頁面上的定位器。這個插件特別有用,因爲它會產生給定定位器的所有匹配。原因之一,自動化可能會失敗(或者至少是行爲異常)是定位器可能有不止一個匹配。

相關問題