我正在尝试为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实现只有几种方法。
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版本中变得越来越普遍。