在我们较慢的测试运行器计算机上,似乎首先可以找到输入元素,但在脚本尝试发送键或单击输入控件时仍然无法单击。等待“ElementToBeClickable”有帮助。更快、更强大的测试运行系统几乎没有这个问题。
这是带有一些上下文的代码,似乎在我基于 C# 的 Selenium 测试中有所改进。还使用 SpecFlow 和 xUnit。我们使用的是 IE11 和 IEDriverServer.exe。
截至 2019 年 5 月,包含此内容的 NuGet 包是 DotNetSeleniumExtras.WaitHelpers。
关键是这一行:
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(通过...
使用指向您要与之交互的第一个输入字段的选择器对新页面上的第一个输入字段执行此操作。(By.XPath("")
[Given(@"I have selected the link to the OrgPlus application")]
public void GivenIHaveSelectedTheLinkToTheOrgPlusApplication()
{
_driver.Navigate().GoToUrl("http://orgplus.myorg.org/ope?footer");
}
[Given(@"I have selected the link to the OrgPlus Directory lookup")]
public void GivenIHaveSelectedTheLinkToTheOrgPlusDirectoryLookup()
{
var wait = new WebDriverWait(_driver, new TimeSpan(0, 0, 30));
var element = wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id=\"lnkDir\"]")));
IWebElement btnSearch = _driver.FindElement(By.XPath("//*[@id=\"lnkDir\"]"));
btnSearch.SendKeys(Keys.Enter);
}