从下拉框中选择-硒

时间:2018-08-15 06:50:59

标签: selenium

HTML:

<span class="Select-multi-value-wrapper" id="react-select-27--value">
  <div class="Select-placeholder">Select</div>
  <div class="Select-input" style="display: inline-block;">
    <style>input#undefined::-ms-clear {display: none;}</style>
    <input role="combobox" aria-expanded="false" aria-owns="" aria-haspopup="false" aria-activedescendant="react-select-27--value" value="" style="width: 5px; box-sizing: content-box;">
    <div style="position: absolute; top: 0px; left: 0px; visibility: hidden; height: 0px; overflow: scroll; white-space: pre; font-size: 13px; font-family: &quot;Open Sans&quot;, sans-serif; font-weight: 400; font-style: normal; letter-spacing: normal; text-transform: none;"></div>
  </div>
</span>

代码:

Select role = new Select(driver.findElement(By.xpath("//span[@id='react- 
select-17--value']/div")));
role.selectByVisibleText("Manager");

也尝试过:

By.xpath("//*[@id='react-select-27--value']/div[1]");
By.xpath("//*[@id='react-select-27--value']");

我遇到以下错误。

Unable to locate element: {"method":"xpath","selector":"//span[@id='react-select-17--value']/div"}

请帮助。

3 个答案:

答案 0 :(得分:0)

您不应使用“选择”。因为它仅适用于选择标签。

对于您而言,您具有 input 标签和 combobox角色。请尝试以下代码

WebElement ele = driver.findElement(By.xpath("//input[@role='combobox' and @aria-activedescendant='react-select-27--value']");

ele.click();

driver.findElement(By.xpath("//*[text()='Manager')");

答案 1 :(得分:0)

您定位的下拉列表不是常规的HTML <select>元素,因此Select类将不起作用。相反,您应该做这样的事情-

driver.findElement(By.xpath("//span[@class='Select-multi-value-wrapper']")).click();

否,您无需找到确切的选项。通常,您无法在检查器中看到所有的React元素。如果您使用的是Chrome浏览器,则可以安装this扩展名,然后查看元素,找到它们,然后通过常规定位器使用Selenium单击它。

答案 2 :(得分:0)

根据您的代码,您不能在此处使用Select,因为它是一个引导程序下拉列表,因此您可以像下面的示例代码一样使用

WebElement DropDownClick = driver.findElement("Locator Value");
DropDownClick.click();
try {
    Thread.sleep(3000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    //List of Drop Down locator
    List<WebElement> Drop_options = driver.findElements(By.xpath("//span[@class='Select-multi-value-wrapper']//div"));
    for (WebElement temp: Drop_options ) {
        if (temp.getText().contains("Manager") {
            temp.click();
            break;
        } else {
            System.out.println("Continue");
        }