【问题标题】:Selenium Java : dropdown items are updated dynamicallySelenium Java:下拉项目动态更新
【发布时间】:2021-04-07 00:17:12
【问题描述】:

我正在处理的 Web 应用程序没有“选择”标签,并且下拉列表中的项目会动态更新。这意味着当我单击下拉菜单的向下箭头时,它会显示大约 10 个项目,当我向下滚动“下拉菜单的滚动条”时,会填充更多项目。
虽然我可以通过在下拉框的“字段”中输入值然后单击创建的“运行时”xpath 来选择一个项目。 driver.findElement(By.xpath("//li[@text()='USA']).click 可以很好地选择任何项目,我需要获取该下拉列表中的所有项目。 有什么办法可以实现吗?

【问题讨论】:

  • 请发布您的相关 HTML 或分享链接?
  • 使用基于文本的相关 HTML 和您的代码试验更新问题。

标签: java selenium cucumber


【解决方案1】:

driver.findElement(By by)driver.findElements(By by) 限定 while DOM。

您可以通过以下方式定位 DOM 的一小部分区域: element.findElement(By by)element.findElements(By by)

使用这个:

WebElement dropdown = driver.findElement(By.DROPDOWN LOCATOR);
List<WebElement> options = dropdown.findElements(By.OPTION LOCATOR);

您仍然需要 OPTION LOCATOR。但是比较容易实现,只会从父元素中收集子元素。

选择方法如下所示:

public void selectByText(List<EebElement> options, String text) {
    for (WebElement element: options) {
        if (element.getText().equals(text)) {
            element.click();
            break;
        }
    }
}

public void selectByValue(List<EebElement> options, String value) {
    for (WebElement element: options) {
        if (element.getAttribute("value").equals(value)) {
            element.click();
            break;
        }
    }
}

【讨论】:

    猜你喜欢
    • 2016-11-01
    • 1970-01-01
    • 2021-04-02
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多