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: "Open Sans", 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"}
请帮助。
答案 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");
}