如何使用selenium单击选择选项

时间:2018-01-09 19:41:42

标签: java selenium select

我无法点击选项元素 -

网站:http://www.oferty.net

当我尝试在下拉列表中选择一个选项时。不幸 我收到了消息:

  

“无法点击选项元素。执行JavaScript点击功能   返回了意外错误“

以下代码我做错了什么:

Select estateType = new Select(driver.findElement(By.id("ps_type")));
estateType.selectByVisibleText("domy");    

请帮忙。

2 个答案:

答案 0 :(得分:0)

我快速检查您要选择的下拉列表的HTML代码,它不是HTML下拉列表。它是使用CSS创建的自定义dropdpown,因此您无法使用Selenium提供的默认功能来选择Dropdown Value。

<div class="jquery-selectbox-list jquery-custom-selectboxes-replaced-list" style="width: 113px; height: 9em; display: none;">
<span class="jquery-selectbox-item value-998 item-0">rynek pierwotny
</span>
...
</div>

可能的解决方案

  • jquery-custom-selectboxes-replaced-list元素上尝试SendKeys,看看它是否有效,如果没有,
  • 单击jquery-custom-selectboxes-replaced-list,然后滚动到您感兴趣的元素并单击它。

答案 1 :(得分:0)

这是一个模拟的下拉列表,不是原生的。 Selenium Select Class只能在Select Tag定义的本机下拉列表中使用。即使有嵌入本机下拉列表,但它是隐藏的,这就是报告无法点击选项错误的原因。当您操作页面的下拉列表时,嵌入的本机下拉列表始终是隐藏的,因此实际上您不会在嵌入本机下载操作。

尝试以下代码:

public void choosePsType(String psType) {
    // find the container node of the dropdown list
    WebElement psTypeSelect = driver.findElement(By.cssSelector("label[for='ps_type'] + div"));

    // click on the selector to expand options
    psTypeSelect.findElement(By.cssSelector("span.jquery-selectbox-currentItem")).click();

    // choose wanted option
    String xpath = String.format(".//span[contains(@class, 'jquery-selectbox-item')][.='%s']", psType);
    psTypeSelect.findElement(By.xpath(xpath)).click();
}