2017-09-28 29 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”))在我的项目中,它工作得很好 –