2016-09-06 111 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