gpt4 book ai didi

c# - 将页面对象与 Selenium 结合使用时检查 WebElement 是否存在

转载 作者:太空宇宙 更新时间:2023-11-03 12:46:03 27 4
gpt4 key购买 nike

我正在使用带有 Selenium 网络驱动程序的 PageObjects 模式,例如

  public class CategoryPage
{
private IWebDriver driver;

[FindsBy(How = How.CssSelector, Using = ".notFound")]
private IWebElement products;

public CategoryPage(IWebDriver webDriver)
{
driver = webDriver;
}

public bool IsProductList
{
get
{
return products != null; // always true.
}
}

// other stuff
}

我通过以下方式填充它:

  var page = new CategoryPage(driver);
PageFactory.InitElements(driver, page);
return page;

在查看页面时,我进行的 IsProductList 检查始终返回 true,即使我将选择器设置为页面上不存在的类或 css 路径也是如此。

我应该如何检查是否存在?

最佳答案

要确定元素是否存在,您可以使用 IList<IWebElement>声明页面对象和.Count知道是否至少有一个元素:

public class CategoryPage {
private IWebDriver driver;

[FindsBy(How = How.CssSelector, Using = ".notFound")]
private IList<IWebElement> products;

public CategoryPage(IWebDriver webDriver) {
driver = webDriver;
}

public bool IsProductList {
get {
return products.Count > 0;
}
}

// other stuff
}

另一种方法是捕捉 NoSuchElementException :

public class CategoryPage {
private IWebDriver driver;

[FindsBy(How = How.CssSelector, Using = ".notFound")]
private IWebElement products;

public CategoryPage(IWebDriver webDriver) {
driver = webDriver;
}

public bool IsProductList {
get {
try {
return products.Equals(products);
} catch (NoSuchElementException) {
return false;
}
}
}

// other stuff
}

关于c# - 将页面对象与 Selenium 结合使用时检查 WebElement 是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37258774/

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