div:nth-child(3-6ren">
gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:01:05 25 4
gpt4 key购买 nike

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

[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/

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