2012-11-06 134 views
2

我得到試圖點擊一個水豚元硒網絡驅動程序錯誤

  • 我使用find(一個奇怪的錯誤:XPath的「//一個[包含(文本(),」連接') 「)點擊
  • (找到(:XPath的」 //一個[包含(文本(),' 連接')「)現在返回true)

錯誤我進去呢?是:

Selenium :: WebDriver :: Error :: MoveTargetOutOfBoundsError異常:元素無法滾動到視圖中:javas CRIPT:無效(0);

我做了一些研究,我發現的唯一解決方案是將硒版本設置爲2.16可以解決這個問題(我使用2.25)。

有人有想法嗎?

+0

我跑了類似的問題,一次,如果我沒有記錯,在結合使用JS用'execute_script'明確執行點擊工作。 – MrDanA

+0

您確定該頁面在出現錯誤時可見嗎? – Klaasvaak

回答

0

從我用selenium webdriver來測試.NET應用程序的時候,當問題出現的時候會出現這樣的錯誤:它正在尋找一個頁面上的對象,因爲某些原因它不能滾動到。在我的情況下,這是因爲一些對話框會顯示沒有滾動條,並且驅動程序無法「將對象滾動到視圖中」

您可以觀察執行測試並查看是否屬於這種情況?我有一些運氣回滾到以前的版本的Firefox,因爲15+是(大約2個月前,當我遇到問題時)不受網絡驅動程序支持,並定期發生此問題。回滾硒版本也可能有所幫助。

雖然第一步肯定是要觀察測試的執行過程,看看發生了什麼。一個好的調試思路可能是嘗試手動完成你的步驟,以確保手動測試。

它也值得注意的是,爲webdriver能夠執行點擊對象實際上必須可見。 IsPresent不需要,它只是搜索頁面文件。也是我碰到的一個問題。 IsPresent對於那些不能或不能在頁面上顯示的對象仍然會返回true(例如,當時您不能看到的頁面底部的東西)

1

當被測頁面不適合時,可能會發生這種情況進入當前窗口大小。如果您知道這些頁面通常會發生這些錯誤,您可以在對這些隱藏元素進行操作之前明確地向下滾動(如點擊,清除等)。這裏的代碼顯式地向下滾動頁面。

在java中,

JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("javascript:window.scrollBy(250,350)"); 
0

小貼士這裏:

  1. webdriver的理想情況下應在最近的更新,這是大多數使用(除非你正在做的紅寶石自動化)

  2. 使用css選擇器xpath(雖然呈現)在資源和代碼上幾乎總是較重。

  3. 嘗試防守性編碼,首先確定它存在。有很多方法可以依賴於你使用的軟件包。在Ruby中,你會做page.has_css?('css_string')