当前位置: 首页 > 面试题库 >

如何为selenium添加自定义ExpectedConditions?

万俟玉书
2023-03-14
问题内容

我正在尝试为Selenium编写自己的ExpectedConditions,但我不知道如何添加新的selenium。有人有例子吗?我在网上找不到任何教程。

在我目前的情况下,我想等到某个元素存在,可见,启用并且没有attr“ 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绑定的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版本中变得越来越普遍。



 类似资料:
  • Thymeleaf有许多有用的实用程序,如或。我试图添加一个自定义的,但不知道如何注册这一点。

  • 我正在这样访问我的存储库中的投影。

  • 如何向Log4J2的JsonLayout添加自定义参数? 还有一种方法可以将模式添加到JsonLayout的消息元素中吗? 我已经尝试了这里列出的选项-> logging.apache.org/log4j/2.x/manual/layouts.html#JSONLayout 请救命!

  • 是否有一个时间格式来指定这样的日期序列到轴在D3和v4?

  • 虽然Blockly定义了许多标准块,但大多数应用程序需要定义和实现至少一些域相关块。 块由三个部分组成: 块定义对象:定义块的外观和行为,包括文本,颜色,字段和连接。 工具箱参考:工具箱XML中对块类型的引用,因此用户可以将其添加到工作区。 生成器函数:生成此块的代码字符串。它是用JavaScript编写的,即使目标语言不是JavaScript,甚至是用于Android端的Blockly。 块定义

  • 我的工具基本上读取PDF并在JTextArea中打印PDF的内容。在我的PDF包含阿拉伯语的PH Mirjan字体之前,一切正常。我的文本区域显示一些垃圾字符,如下所示。 我该如何解决这个问题? 我的文本区域的默认字体是Arial Unicode MS。我可以配置文本区域的字体吗?假设我在本地下载了PH Mirjan,如何将文本区域字体更改为下载的字体。非常感谢任何建议或参考链接。 编辑 这给了我