gpt4 book ai didi

c# - 如何为 Selenium 添加自定义 ExpectedConditions?

转载 作者:可可西里 更新时间:2023-11-01 03:13:46 26 4
gpt4 key购买 nike

我正在尝试为 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com