有没有办法用css过滤掉隐藏的元素?

时间:2015-05-15 21:52:35

标签: css selenium

作为示例,一些html有几个具有css路径table.class1.class2[role="menu"]的元素,但在任何给定时间只能看到其中一个元素,所以我想只得到一个可见的元素。 我可以调整我的CSS路径来缩小它吗?

2 个答案:

答案 0 :(得分:0)

可能会使用Linq来获取列表。我不确定您使用的是哪种语言。但是,可以使用它们中的任何一个来应用类似的概念。使用LinqC#

中完成这种情况非常简单
public IWebElement Test()
{
    //selector
    By bycss = By.CssSelector("table.class1.class2[role='menu']");

    return Driver.FindElements(bycss).ToList().FirstOrDefault(d => d.Displayed);
}

并确保导入 如果您使用using System.Linq;

,请C#

在Java中你可以做这样的事[不使用lambdas]

List<WebElement> visibleList = null;
//selector
By byCss = By.cssSelector("table.class1.class2[role='menu']");
//list of visible and hidden elements
Iterator<WebElement> iterator = driver.findElements(byCss).iterator();

while (iterator.hasNext()){
    WebElement element = iterator.next();
 if (element.isDisplayed()){
     //building the list of visible elements
     visibleList.add(element);
 }
}

//get the first item of the list
//you can return all if needed
return visibleList.get(0);

答案 1 :(得分:-1)

在Java中,您可以使用WebElement.isDisplayed()