如何使用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 类用于与&lt;select&gt; 标签而不是&lt;ul&gt; 标签一起使用,所以我想您在尝试实例化clickThis 时收到了 UnexpectedTagNameException?

对于您的方案,您应该首先使用类似以下的方式识别父级 &lt;ul&gt; 标签:

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

由于您尝试使用的子 &lt;li&gt; 标签包含自己的 &lt;a&gt; 标签,您可以使用 By.linkText() 定位器查找并单击您需要的货币选项,如下所示:

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

【讨论】:

【参考方案2】:

Select 类仅适用于 &lt;select&gt; 标记。在您的情况下,您需要打开下拉列表以使选项可见,然后单击您需要的选项

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在网站内的页面中导航?

一日一技:如何正确移除Selenium中window.navigator.webdriver的值

Python+selenium自动化测试之浏览器基础操作

Selenium WebDriver的使用

爬虫之selenium模块

Selenium使用Chrome模拟手机浏览器方法解析