java - Selenium - 使用通配符从下拉列表中选择一个选项?

标签 java selenium drop-down-menu selenium-webdriver

从 Selenium 的下拉列表中选择选项时是否可以使用通配符?我正在开发一个网络应用程序,将文件上传到服务器。上传文件后,我可以通过从下拉列表中选择该文件来执行操作。但是,下拉列表显示文件以及文件的大小,因此在查看选项时它将显示“文件名 - 0.5 GB”。我无法使用 selectByValue,因为 value 属性是随机分配的,并且我无法使用 selectByIndex,因为选项的顺序可能会根据显示的文件数量而变化。

我能想到的最好的办法就是这样(Java 代码):

Select sel = = new Select(dropdown);
List<WebElement> list = sel.getOptions();
for (WebElement option : list) {
    if (option.getText().contains(data.getImageName())) {
        sel.selectByVisibleText(option.getAttribute("value"));
        break;
        }
}

但我想当我不知道要显示的确切文本时,必须有更好的方法从下拉列表中选择选项。有吗?

最佳答案

根据Select class implementation ,只有 selectByVisibleText() 相关方法,但它relies on the full option text ,不是部分的:

List<WebElement> options =
    element.findElements(By.xpath(".//option[normalize-space(.) = " + escapeQuotes(text) + "]"));

如您所见,它在 xpath 表达式中使用 = 匹配。

解决方案是使用 xpath 的 contains()“手动”查找选项并调用 setSelected() :

Select sel = = new Select(dropdown);
WebElement option = driver.findElement(By.xpath('//path/to/select//option[contains(., "Partial text")]'));
sel.setSelected(option);

关于java - Selenium - 使用通配符从下拉列表中选择一个选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26184039/

相关文章:

php - php 和 mysql 目录样式数据库中的子菜单

javascript - html 移动菜单大小调整

java - Selenium Web 驱动程序中的选择器问题

java - 请提供 hibernate 条件中 If 语句的示例

java - setRepeating() 没有正确重复

java - 无法调整 selenium grid 2 节点上的窗口大小

java - Selenide:如何使用扩展程序打开 Chrome 浏览器

java - 确保已颁发的证书不会自行颁发证书

java - 从 java 将参数传递给 c 代码

python - Selenium 从 CookieJar 添加 Cookie