Selenium IEdriver NoSuchElementException异常

时间:2015-02-20 09:31:41

标签: internet-explorer selenium webdriver

我在IE selenium驱动程序中遇到过这种行为 - 我使用Selenium IDE生成的TEST CASE代码 - 在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. 如果我让测试没有踩踏和断点,那么
  3. 会发生NoSuchElementFindException

    driver.FindElement(By.Id( “ctl00_ContentPlaceHolderMain_identifikaceROB_tbAIFO”))清除();

    以防

    1. 通常会发生这种情况 - 每次测试都会通过 - 但有时不会使用NoSuchElementFindException
    2. 同事给了我建议,使用tab键导航到组件(在这种情况下为TB) - 到目前为止还没有成功,但尝试这种方式。

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

      任何想法或相同的经历?

      更新

      初​​始化:

      [SetUp]
      public void SetupTest()
      {
      
          var options = new InternetExplorerOptions
          {
              IgnoreZoomLevel = true
          };
      
          driver = new InternetExplorerDriver(".", options);
      
          baseURL = "http://vm-kzr-dev/";
          verificationErrors = new StringBuilder();
      }
      

2 个答案:

答案 0 :(得分:1)

IE似乎速度较慢,如果测试是通过Firefox传递,那么IE渲染页面会慢一些,在这种情况下你可以使用

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

答案 1 :(得分:1)

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

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

请参阅this了解原生事件与IEDriver的关系。

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

var options = new InternetExplorerOptions
{
    EnableNativeEvents = false
};