如何使用Java在Selenium WebDriver中按类名选择下拉值[重复]
Posted
技术标签:
【中文标题】如何使用Java在Selenium WebDriver中按类名选择下拉值[重复]【英文标题】:How to select a dropdown value by classname in Selenium WebDriver using Java [duplicate] 【发布时间】:2016-09-05 09:49:48 【问题描述】:我是 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");
但这不起作用。
请给我一些设置下拉值的方法。
谢谢!
【问题讨论】:
WebElement dropDownListBox = driver.findElement(By.className("ul.ns-dropdown"));选择 clickThis = new Select(dropDownListBox);clickThis.selectByValue("AUD");但这对我不起作用。 @RafaelAlmeida 如何在双引号内给出 Xpath ? @BalamuruganV 你应该检查documentation 【参考方案1】:Select 类用于与<select>
标签而不是<ul>
标签一起使用,所以我想您在尝试实例化clickThis
时收到了 UnexpectedTagNameException?
对于您的方案,您应该首先使用类似以下的方式识别父级 <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();
【讨论】:
【参考方案2】: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.
【讨论】:
以上是关于如何使用Java在Selenium WebDriver中按类名选择下拉值[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Selenium和Python在网站内的页面中导航?