2016-01-22 100 views
0

我在C#測試中遇到了一些困難,因爲它對響應式網站應用程序很困難。我有四個網站的可能性。這些是相同代碼的兩種變體,但皮膚不同,並且每個變體都響應地調整大小。我的測試使用的尺寸爲1024x768,代表桌面,420x620代表手機。兩個桌面測試都完美地工作,但是當嘗試點擊一個單選按鈕時,一個(只有一個)手機崩潰。我多次修改我的代碼,試圖找到一個沒有成功的解決方案;總是,三次傳球,但一次移動崩潰。我終於用下面的代碼來解決此問題:Webdriver不會在正確的座標上點擊

public void ClickRadioButton() 
    { 
     By element = By.Id("radioButtonID"); 
     IWebElement wait = WaitForElementToAppear(WebDriver, 5000, element); 
     int x = wait.Location.X; 
     int y = wait.Location.Y; 
     wait.Click(); 
    } 

與wait.Click(斷點),並檢查座標值,wait.Location.X有52值和wait.Location.Y有值爲1596.這些座標對於單選按鈕的位置是正確的,但wait.click()失敗並顯示以下消息:

意外錯誤。元素在點(58,6)不可點擊。其他元素會收到點擊:

我不明白爲什麼wait.Click()使用這些座標。

+0

你可以分享你正在使用的WaitForElementToAppear方法嗎? – AlexCharizamhard

+0

作爲一個快速更新,問題已被確定爲單選按鈕元素不在視圖中,僅用於網頁的這一個呈現。它呈現在視圖頂部的上方,它解釋了報告的y座標。沒有一種衆所周知的方式將元素引入視圖工作。在元素click()處設置斷點並手動將其放入視圖中,然後向前邁進成功,但接下來的單選按鈕失敗。我正在繼續研究這個問題,並希望提出一個能夠在未來幫助其他人的決議。 –

回答

0

基本上,它可以選擇單選按鈕,因爲它可能是不可見的不可見單選按鈕。如果您搜索多個單選按鈕,請在所有找到的單選按鈕上啓動單擊事件,併爲系統找到的所有單選按鈕設置一個「錯誤處理程序」,其中一個按鈕將單擊您要查找的單選按鈕。另外,如果焦點是正確的,而不是做一個.Click事件,你應該用一個SendKeys(「\ n」)事件替換。

+0

作爲一個快速更新,該問題已被確定爲單選按鈕元素不在視圖中,僅用於此網頁的一個呈現。它呈現在視圖頂部的上方,它解釋了報告的y座標。沒有一種衆所周知的方式將元素引入視圖工作。在元素click()處設置斷點並手動將其放入視圖中,然後向前邁進成功,但接下來的單選按鈕失敗。我正在繼續研究這個問題,並希望提出一個能夠在未來幫助其他人的決議。 –