Selenium IEdriver NoSuchElementException 异常

Selenium IEdriver NoSuchElementException exceptionally

我在 IE selenium 驱动程序中遇到了这种行为 - 我正在使用 Selenium IDE 生成的测试用例代码 - 在 Firefox 中工作正常。

driver.Navigate().GoToUrl(baseURL + "/RZR/1.5.85/ZobrazitReklamaceROB.aspx");
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_rbAIFO")).Click();
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_tbAIFO")).Clear();
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_tbAIFO")).SendKeys("pqrJrJxtt/qUvjhO8=");
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_btnVyhledat")).Click();
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_btnVyhledat")).Click();
//Actions action = new Actions(driver);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Tab);
//action.SendKeys(OpenQA.Selenium.Keys.Enter);

driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_gvPrehled_ctl04_selectButton10168579135")).Click();

然而 IEDriver - 如果我 运行 此代码在 VS2013

  1. 正在使用断点进行调试并逐步完成 - 它确实有效
  2. 如果我让测试在没有步进和断点的情况下进行,那么 NoSuchElementFindException 将发生在

driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_tbAIFO")).清除();

万一

  1. 这通常会发生 - 而且每次都会通过测试 - 但有时不会 NoSuchElementFindException

同事们建议我使用 Tab 键导航到组件(在本例中为 TB)- 到目前为止也不成功,但尝试了这种方式。

使用IE最新更新,ZOOM 100%,根据selenium网页修改注册表,所有区域设置相同的保护模式

有什么想法或相同的经历吗?

更新:

初始化:

[SetUp]
public void SetupTest()
{

    var options = new InternetExplorerOptions
    {
        IgnoreZoomLevel = true
    };

    driver = new InternetExplorerDriver(".", options);

    baseURL = "http://vm-kzr-dev/";
    verificationErrors = new StringBuilder();
}

IE 似乎更慢,如果使用 Firefox 测试通过,则 IE 渲染页面速度较慢,在这种情况下您可以使用

WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.Id("ctl00_ContentPlaceHolderMain_gvPrehled_ctl04_selectButton10168579135")));

这是一个问题。您需要禁用 IE 本机事件。

InternetExplorerOptions options = new InternetExplorerOptions();
options.EnableNativeEvents = false;

请参阅 this 以了解本机事件与 IEDriver 的关系。

我还建议您删除多余的 ignoreZoomLevel 并将其替换为 EnableNativeEvents

var options = new InternetExplorerOptions
{
    EnableNativeEvents = false
};