如何使用java在SeleniumWebDriver中按类名选择下拉值

bvjxkvbb  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(315)

这个问题在这里已经有答案了

如何在selenium 2中选择/获取下拉选项(8个答案)
四年前关门了。
我是 selenium 的新手,目前正在从事 selenium 的工作。我想从下拉列表中选择一个值。ul class=“ns dropdown”和选项很多,我正在尝试选择和加载澳元页面。
下面是html标记:

<ul class="ns-dropdown">
<li class="ns-option><a class="c36 noUnderline">USD</a></li>
<li class="ns-option><a class="c36 noUnderline">AUD</a></li>
<li class="ns-option><a class="c36 noUnderline">NZD</a></li>
</ul>

这是我试过的代码

WebElement dropDownListBox = driver.findElement(By.className("ul.ns-dropdown")); 
Select clickThis = new Select(dropDownListBox);
clickThis.selectByValue("Australian Dollar");

但这不管用。
请给我一些设置下拉值的方法。
谢谢您!

6tdlim6h

6tdlim6h1#

Select 全班只学习 <select> 标签。在您的情况下,您需要打开下拉列表使选项可见,然后单击所需的选项

driver.findElement(By.className("ns-dropdown")).click(); // open the dropdown
driver.findElement(By.linkText("AUD")).click(); // choose Australian Dollar

如果有计时问题,可以添加显式等待

WebDriverWait wait = new WebDriverWait(driver, 10);

driver.findElement(By.className("ns-dropdown")).click(); // open the dropdown
wait.until(ExpectedConditions.visibilityOfElementLocated(By.ilinkText("AUD"))).click(); // wait for the option to be visible before clicking on it.
b1zrtrql

b1zrtrql2#

select类用于 <select> 标签而不是 <ul> 标记,所以我想当您尝试示例化时,您会收到一个意外的tagnameexception clickThis ?
对于您的场景,您应该首先确定父级 <ul> 标记方式如下:

// Very similar to what you first tried!
WebElement dropDownListBox = driver.findElement(By.className("ns-dropdown"));`

作为孩子 <li> 您尝试使用的标记包含它们自己的个体 <a> 标签,您可以使用 By.linkText() 定位器,以查找并单击所需的货币选项,例如:

WebElement currency = dropDownListBox.findElement(By.linkText("Australian Dollar"));
currency.click();

相关问题