2016-09-06 148 views
0

我使用Selenium WebDriver代替Visual Studio 2015。我遇到了一個原本正在工作然後停止工作的單選按鈕的問題,然後再次恢復工作。我試圖縮小原因的任何理由,但我似乎無法孤立這個問題。Web元素隨機停止工作

  1. 我已經試過這兩個IE 10/11Chrome並沒有看到任何WebElement更長。

  2. 我添加了一個等待函數來試試,看看如果元素是可見的(甚至試圖睡眠,以防萬一)

  3. 既然是Click()方法我都試過都點擊和的SendKeys。進入

  4. 的多個路徑,通過名字,CSS,ID的XPath但webelement並沒有在所有

變化請參考下面我的代碼: -

test.Log(LogStatus.Info, "Blah", "Before"); 
try 
{ 
    radBtnCID=wait.Until(ExpectedConditions.ElementIsVisible(By.Id("someID"))); 
    if (radBtnCID == null) 
    { 
     test.Log(LogStatus.Error, method, "Web Element Returned Null: radBtnCID"); 
    } 
    else 
    { 
     radBtnCID.SendKeys(Keys.Enter); 
     test.Log(LogStatus.Info, radBtnCID.Text, radBtnCID.Text); 
    } 
} 
catch (Exception ex) 
{ 
    test.Log(LogStatus.Error, method, ex.Message); 
} 
test.Log(LogStatus.Info, "Blah", "After"); 

當我調試等待功能後,它移動到else語句所以它沒有看到代碼WebElementnull,我從字面上看它執行的代碼行,但它從來不會選擇所需的單選按鈕它不會拋出異常,我可以成功地看到我的前後消息。請幫助,因爲這一直在進行,我正在用盡想法。

+0

,什麼是這個'radBtnCID問題。點擊()'?? –

+0

與radBtnCID.SendKeys(Keys.Enter)相同,它看起來是正確的代碼,並從未選擇所需的單選按鈕 –

+0

嘗試使用'IJavascriptExecutor'作爲==>'IJavascriptExecutor js = driver作爲IJavascriptExecutor; js.ExecuteScript(「參數[0] .click()」,radBtnCID);'並讓我知道.. :) –

回答

1

它似乎在你的頁面,這就是爲什麼你在這裏無法執行IWebElement.Click()設計問題,您也可以按照以下使用IJavaScriptExecutor嘗試作爲一個替代的解決方案: -

IJavaScriptExecutor js = driver as IJavaScriptExecutor; 
js.ExecuteScript("arguments[0].click()",radBtnCID); 
+1

不應在測試上下文中使用JavaScript注入'HTMLElement.click()'。它打敗了測試的目的。首先是因爲它不會像真正的點擊(焦點,模糊,mousedown,mouseup ...)那樣產生所有事件,其次是因爲它不能保證真正的用戶可以與元素進行交互。 –

+0

@FlorentB。是的,你是完全正確的,這就是爲什麼我提到可以用作替代解決方案。感謝指出.. :) –

+0

@FlorentB。好點子。但是,你有任何解決方案建議嗎? – Thibstars