作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试为 Selenium 编写自己的 ExpectedConditions,但我不知道如何添加新的。有人有例子吗?我在网上找不到任何教程。
在我目前的情况下,我想等到元素存在、可见、启用并且没有属性“aria-disabled”。我知道这段代码不起作用:
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(seconds));
return wait.Until<IWebElement>((d) =>
{
return ExpectedConditions.ElementExists(locator)
&& ExpectedConditions.ElementIsVisible
&& d.FindElement(locator).Enabled
&& !d.FindElement(locator).GetAttribute("aria-disabled")
}
编辑:一些附加信息:我遇到的问题是 jQuery 选项卡。我在禁用的选项卡上有一个表单,它会在该选项卡激活之前开始填写该选项卡上的字段。
最佳答案
“预期条件”只不过是使用 lambda 表达式的匿名方法。自 .NET 3.0 以来,这些已成为 .NET 开发的主要内容,尤其是随着 LINQ 的发布。由于绝大多数 .NET 开发人员都熟悉 C# lambda 语法,因此 WebDriver .NET 绑定(bind)的 ExpectedConditions
实现只有几个方法。
按照您的要求创建等待看起来像这样:
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until<IWebElement>((d) =>
{
IWebElement element = d.FindElement(By.Id("myid"));
if (element.Displayed &&
element.Enabled &&
element.GetAttribute("aria-disabled") == null)
{
return element;
}
return null;
});
如果您对这种构造没有经验,我建议您成为这样的人。它只会在 .NET 的 future 版本中变得更加普遍。
关于c# - 如何为 Selenium 添加自定义 ExpectedConditions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21339339/
我是一名优秀的程序员,十分优秀!