作为示例,一些html有几个具有css路径table.class1.class2[role="menu"]
的元素,但在任何给定时间只能看到其中一个元素,所以我想只得到一个可见的元素。
我可以调整我的CSS路径来缩小它吗?
答案 0 :(得分:0)
可能会使用Linq
来获取列表。我不确定您使用的是哪种语言。但是,可以使用它们中的任何一个来应用类似的概念。使用Linq
在C#
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()
。