IE中的Selenium测试'Unable to locate element'



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

有一个等待功能,我试图扩展它,以防万一页面渲染出现问题,但这不起作用。当使用开发工具并搜索元素时,它发现它没有问题,所以我对它在测试中失败的方式感到困惑。

有谁知道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);
        }
    }
有时您需要在

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

相关内容

最新更新