<select>标记不适用于在下拉列表中选择值

时间:2018-01-14 17:28:26

标签: selenium select selenium-webdriver

我正面临着下拉有标签的问题。但我仍然无法在下拉列表中选择值,它会抛出异常。我能够获得下拉值但无法选择 这是完整的细节 网址:https://semantic-ui.com/modules/dropdown.html 测试用例:在“技能”下拉列表中选择多个值。(在网页上查找确切字段的附件。 WebDriver driver = new FirefoxDriver(); driver.get(&#34; HTTPS://semantic-ui.com/modules/dropdown.html"); driver.manage()。timeouts()。implicitlyWait(10L,TimeUnit.SECONDS); WebElement Dropdown = driver.findElement(By.name(&#34;技巧&#34;)); 选择sel = new选择(driver.findElement(By.name(&#34;技巧&#34;))); 列表与LT; WebElement&GT; Options = sel.getOptions(); 的System.out.println(Options.size()); for(int i = 0; i&lt; Options.size() - 1; i ++){     driver.findElement(By.xpath(&#34; // * [@ id中= \&#34;例如\&#34;] / DIV [4] / DIV [1] / DIV [2] /格[4 ] / DIV [1] / DIV [8] / DIV&#34))点击();     的System.out.println(Options.get(ⅰ).getAttribute(&#34;值&#34));     如果(Options.get(ⅰ).getAttribute(&#34;值&#34;)equalsIgnoreCase(&#34;角&#34)|| Options.get(ⅰ).getAttribute(&#34;值&#34 ;)。equalsIgnoreCase(&#34; Graphic Design&#34;)|| Options.get(i).getAttribute(&#34; value&#34;)。equalsIgnoreCase(&#34; HTML&#34;)){         了Thread.sleep(6000);         sel.selectByIndex(ⅰ);         }     } } 例外: 线程&#34; main&#34;中的例外情况org.openqa.selenium.ElementNotInteractableException: 请帮忙建议一下。

1 个答案:

答案 0 :(得分:3)

您的下拉菜单是css的模拟下拉菜单,而不是HTML原生下拉菜单:Select。因此,您无法将其作为本机下拉菜单运行。

在查看下拉列表的HTML代码后,会有一个嵌入式本机下拉列表,但无论您是否扩展选项,它始终都是不可见的。 Selenium无法对隐形元素进行操作(但您可以从中读取值/属性),这就是您遇到的异常的原因。

实际上所有选项都来自div class="menu",因此您应该点击div class="menu"中的选项,如下面的屏幕截图所示:

enter image description here

解决问题的代码:

// click arrow down to expand options
driver.findElement(By.cssSelector("select[name='skills'] + i")).click();
// choose option: Angular
driver.findElement(By.xpath("//div[contains(@class, 'multiple')][select[@name='skills']]//div[.='Angular']"));