2011-11-24 53 views
5

我使用Selenium WebDriver 2.5.0(嘗試2.13.0,它沒有幫助)。 我試圖點擊這樣的鏈接:Selenium在某些機器上點擊錯誤的鏈接(或者根本沒有點擊鏈接)

driver.FindElement(By.PartialLinkText("Customer - Creation").Click(); 

之前,它的工作,但我已經嘗試了3周, 後運行腳本我觀察3個機3種不同的行爲:

  1. 機器A:根本沒有點擊鏈接,也沒有錯誤。

  2. 機器B:它點擊不同的鏈接!有時一個在上面,有時在下面一個。

  3. 機器C(虛擬):它工作。

我還沒有完全測試過這個(今天用了半天),但是有沒有人偶然發現過這樣的行爲?

我重新啓動了我的電腦,重新添加了Selenium庫。 「SendKeys(Enter)」有幫助,但是這個問題不僅發生在鏈接上,而且還發生在至少收音機框中,其中「SendKeys(Enter)」不起作用。

請分享您的想法。

更新:瀏覽器是至少2臺機器一樣,IE瀏覽器8.0

+0

與特定的瀏覽器驅動器,所有的瀏覽器驅動程序,該驅動程序的HTML發生這種情況?如果一個特定的瀏覽器驅動程序,瀏覽器版本是否與3個系統一致? – Tarwn

+0

他們都是完全相同的瀏覽器?和哪一個? – ashwoods

+0

瀏覽器在至少2臺機器上是相同的,Internet Explorer 8.0 – Andrey

回答

5

在硒的問題由nebehr.g ... @ gmail.com回答:

這個問題一直不時彈出來的時間,通常與請求澄清返回。底線是,InternetExplorerDriver錯誤地計算了一些對象的座標,並在錯誤的地方點擊。其中一個原因是縮放值不是100%;但是對於100%變焦的某些控件也是可重現的。

我想如果你可以創建一個示例頁面來演示這個問題會有幫助。在此期間,爲什麼不使用Javascript click()方法來獲取控件?

http://code.google.com/p/selenium/issues/detail?id=3052

+0

老版本的Firefox可能也有這個問題嗎? – NoBrainer

0

聽起來像元素沒有出現在頁面的HTML,但一旦頁面加載代替動態添加。發生什麼取決於機器的速度以及文本的獨特性。我敢打賭,如果你增加了長時間睡眠(,例如,一分鐘),你會在所有3臺機器上得到相同的結果。如果是這樣,那就表明了一個最經典的Selenium測試問題 - 試圖在不完整的頁面上執行操作。您需要找到一個要等待的元素,以確保您想要點擊的鏈接的存在。

+0

您如何解釋SendKeys(Enter)的工作原理? – Andrey

0

我只是在Firefox同樣的問題。縮放比例爲100%,選擇是由xpath確定的。當我最大化browerwindow時,問題消失了!

代碼:(蟒蛇API)

self.driver.maximize_window() 
1

有一個在安德烈的回答,並在硒的問題,他提到在https://code.google.com/p/selenium/issues/detail?id=3052了很多有用的信息。只是將所有這些信息捆綁在一起,並提供一個成功的解決方法...

我也遇到點擊發生在錯誤的屏幕座標 - 在OP第一次提到它後四年的問題!正如其他人所說:

  • 此問題與InternetExplorerDriver有關。我在測試IE 9時遇到問題 ,但不是Chrome,Firefox甚至IE 8。
  • 正如Selenium問題所述,我測試的網站使用框架。

我嘗試了在這篇文章和其他地方提出的幾種解決方法。下面的一切並沒有幫助:

  • 更新到最新InternetExplorerDriver(2.47.0版本)
  • 最大化瀏覽器窗口。
  • 將瀏覽器縮放設置爲100%。
  • 使用具有或不具有move_by_offset的操作鏈,而不是WebDriver的click()方法。

正如Andrey所建議的那樣,DID的幫助是使用JavaScript代替WebDriver的click()方法。下面是做的伎倆Python代碼行:

driver.execute_script("jQuery('{}').click();".format(css_selector)) 

這假定「驅動程序」是硒的webdriver的情況,「css_selector」是確定要單擊該元素的字符串,而jQuery是加載。

2

另一件要檢查的是屏幕分辨率(不是桌面分辨率,而是文本和圖標的系統級大小)。我的辦公室中有兩臺筆記本電腦用於測試,一臺運行Windows 7,另一臺運行Windows 10.兩者的屏幕分辨率均大於100%,Selenium在將鼠標移動到鼠標的正確位置時出現問題點擊和懸停等事件。只要屏幕分辨率設置爲100%,所有鼠標操作都能正常工作。

的Windows 7:http://windows.microsoft.com/en-us/windows7/make-the-text-on-your-screen-larger-or-smaller?v=t

的Windows 10:https://superuser.com/questions/951199/windows-10-system-font-size-change

+0

這個答案對我有幫助。謝謝! – Buaban