2017-09-28 60 views
0

如果我們用硒碼如何忽略從下拉菜單隱藏選項使用硒

Select sel = new Select(ele); 
eles = sel.getOptions(); 

它會回報的下拉選項所有元素,我們可以得到的價值。 但是,如果某些下拉選項處於隱藏狀態,並且我們使用相同的Select.getOptions(),它將返回所有選項,包括隱藏選項。

代碼:

<select id="userType" > 
     <option value="administrator">Administrator</option> 
     <option value="instructor">Instructor</option> 
     <option class="studenthide" value="student" style="display: none;">Student</option> 
</select>  

從約代碼,管理員和教師只顯示在下拉列表中,但學生沒有在下拉列表中顯示。

那麼我們如何才能從下拉菜單中獲得顯示的選項?

回答

0

我不知道如何使用select類。但是你可以用下面的XPath獲取所有可見的元素融入到一個列表

driver.findElements(by.xpath("//select[@id="userType"]/option[not(contains(@style,"display: none"))]")) 
+0

代碼看起來不錯的獨立程序,但它不適合大型項目。 –

+0

我不確定您的項目規模有多大。但是我們可以使用一個或兩個複雜的xpath,並且它在執行時間上不會有任何顯着差異。 –

0

這裏去替代片段:

List<WebElement> elements = driver.findElements(By.xpath(".//select/option[not(contains(@style,'display: none'))]")); 
    for(WebElement element : elements){ 
     System.out.println(element.getText()); 
    } 
+0

通過查找,它的工作很清晰。但是,如果我在Xpath上使用_isDisplayed()_,它將返回true,實際上它不會顯示。如果我在我的項目中使用這些類型的Xpath,它就會使用硒。我的觀點有什麼結論? –

+0

而且我們不能保證只有一個代碼'@ style ='display:none''來隱藏選項。我確定有很多代碼可以隱藏標記語言中的選項。 –

+0

@DINESHKUMAR:從你給出的代碼片段中,這是區分學生選項和其他選項的唯一方法。我多次使用了(包含(@style,「display:none」))在我的項目中,它工作得很好 –