我创建了一个自动化测试,将用户登录到站点并执行某些操作。该测试首先在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);
}
}
答案 0 :(得分:0)
有时您需要在尝试查找元素之前暂停,因为页面或框架尚未准备好。或者,如果您不想暂停,可以使用限时while循环包装处理错误条件的try-catch,如果失败则重试查找。)