2015-05-15 112 views
0

作爲一個例子,一些html有幾個元素具有css路徑table.class1.class2[role="menu"]但是在任何給定時間只有其中一個元素可見,所以我只想得到一個可見的元素。 我可以調整我的css路徑以縮小它的範圍嗎?有沒有辦法用css過濾掉隱藏的元素?

+1

但是,您可以使用'Selenium' api – Saifur

+0

來取代他們隱藏的方式 – CupawnTae

+0

@Saifur我如何使用Selenium? – JDOdle

回答

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中,你可以做這樣的事情[未使用lambda表達式]

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); 
相關問題