在IE中,Selenium测试'无法定位元素'

时间:2012-11-19 10:24:24

标签: visual-studio-2010 selenium automated-tests

我创建了一个自动化测试,将用户登录到站点并执行某些操作。该测试首先在Firefox,Chrome和IE中运行。它在Firefox中完美运行,关闭浏览器,然后在Chrome中执行测试并再次关闭浏览器。当完全相同的测试在IE中打开URL时,它表示无法找到登录过程的元素“UserName”。

我有一个等待函数,我试图扩展,以防它是页面渲染的问题,但这不起作用。当使用开发工具并搜索元素时,它发现它没有问题,所以我很困惑它在测试中如何失败。

有没有人知道IE中会出现什么原因?

文本字段的HTML看起来像这样......

                                      

适用于FF和Chrome但不适用于IE的Selenium代码是:

私有结果_Test_Login(IWebDriver驱动程序)         {             结果rt;

        driver.Navigate().GoToUrl("MyURL");
        driver.FindElement(By.Id("UserName")).Click();
        TextboxOperation type = new TextboxOperation("UserName", driver, "Success", EnumSearchType.ById);
        OperationExecutor.PerformOperations(type);

        rt = new Results(driver.Url, driver.PageSource, "Existing Users");

        return rt;
    }

    [TestMethod]
    public void Test_Login()
    {
        List<IWebDriver> drivers = new List<IWebDriver>() { firefoxDriver, chromeDriver, ieDriver };
        foreach (IWebDriver driver in drivers)
        {
            Results results = _Test_Login(driver);

            if (results.Exception != null)
            {
                throw results.Exception;
            }

            Assert.IsFalse(results.ErrorState);
        }
    }

1 个答案:

答案 0 :(得分:0)

有时您需要在尝试查找元素之前暂停,因为页面或框架尚未准备好。或者,如果您不想暂停,可以使用限时while循环包装处理错误条件的try-catch,如果失败则重试查找。)