c# - 有没有办法在 Selenium 的 C# 端口中使用 WebDriverWait 的 FindsBy 注释?

标签 c# selenium

所以我开始使用这个很棒的功能:

[FindsBy(How = How.CssSelector, Using = "div.location:nth-child(1) > div:nth-child(3)")]
public IWebElement FirstLocationTile { get; set; }

但问题是它似乎在我的 WebDriverWait 代码中不起作用!

具体示例,我无法重复使用我的 FirstLocationTile。它坚持要有一个 By.:

 var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(BaseTest.defaultSeleniumWait));
 wait.Until(ExpectedConditions.ElementIsVisible(By.CssSelector("div.location:nth-child(1) > div:nth-child(3)")));

有什么想法吗?

最佳答案

如果使用 ExpectedConditions,则只能通过定位器来识别,因为 ExpectedConditions 只接受定位器作为参数。

但是,ExpectedConditions 并不是您可以在 wait.until() 中使用的唯一参数。您可以改为在 lambda 表达式中使用您的元素。

^ C#、Python 和其他语言也是如此。

An example lambda expression use can be found in the C# documentation ,下面是您要实现的目标的示例:

wait.Until(FirstLocationTile => FirstLocationTile.Displayed && FirstLocationTile.Enabled);

我使用 Displayed 和 Enabled 作为示例,因为元素没有 Visible 属性 in the C# documentation .

关于c# - 有没有办法在 Selenium 的 C# 端口中使用 WebDriverWait 的 FindsBy 注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19576305/

相关文章:

c# - 通过括号之间的逗号对字符串进行分组

c# - 如何禁用 Windows 平板电脑内置的网络摄像头

c# - 如何从其构造函数设置自定义异常类的 InnerException

java - Selenium WebDriver、使用 Java 的 TestNG

python - Selenium / python : Closing Alert Window in Chrome

c# - 在引用的方法中注入(inject)一个要调用的方法

c# - 从 Entity Framework 调用时出现存储过程错误

javascript - 从 Quora - Python 中使用 Selenium 提取 "(more)"文本

python - 在 Selenium/Python 中循环遍历 div 中的 div

java - 如何返回到 XPath 中的直接父级并获取文本?