java - 如何查找动态下拉列表元素的网页元素位置?

标签 java selenium

我无法找到下拉列表的动态 Web 元素位置

public void selectClassofService(String value) throws InterruptedException
{

    driver.findElement(By.xpath("/html/body/div[1]/div/div/div/div[3]/div[2]/div[2]/div/div/div/div[2]/div[2]/div[2]/form/div[5]/div/div[2]/div/div/div[1]/input")).click();

   List<WebElement> list = driver.findElements(By.xpath("/html/body/div[1]/div/div/div/div[3]/div[2]/div[2]/div/div/div/div[2]/div[2]/div[2]/form/div[5]/div/div[2]/div/div/div[1]/input"));
    System.out.println("Size of the list size =" + list.size());
    for (int i = 0; i < list.size(); i++) {
        System.out.println("names of the divisions " + list.get(i).getText());

        if (list.get(i).getText().contains(value)) {
            list.get(i).click();
            break;
        }

    }

这是我的示例 html 代码

<ui class="vs_dropdown-menu" role="listbox">
<l1 class=vs_dropdown-option role="option">sample pack </l1>
<l2 class=vs_dropdown-option vs vs_dropdown-option--highlight role="option">sample pack </l2>
<l3 class=vs_dropdown-option role="option">sample pack2 </l3>

最佳答案

首先,停止编写太长的 xpath。有更好的方法来访问元素,而不是做那些令人毛骨悚然的事情。

String dropdownXpath = "//input[@class='vs_dropdown-menu' and @role='listbox']";

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath(dropdownXpath))).click();

List<WebElement> myList = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath(dropdownXpath + "//li[@class='vs_dropdown-option' and @role='option']")));

for (WebElement element:myList)
{
    System.out.println("names of the divisions " + element.getText());
    if(element.getText().contains("Mumbai"));
        element.click();
}

如果无法像上面那样访问下拉列表,只需获取父 div 的 Id,如下所示:

String dropdownXpath = "//div[@id='some-id']input[@class='vs_dropdown-menu' and @role='listbox']";

不要浪费时间通过抓取 html 标签来查找元素。

关于java - 如何查找动态下拉列表元素的网页元素位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57972172/

相关文章:

java - 为什么我收到 actionPerformed() 错误 : unknown source?

java - 如何在 Zuul post filter 中获取响应体?

Java selenium 如何从谷歌搜索结果中打开链接?

java - 如何在 selenium webdriver 框架中定位或使用不同的定位器?

vb.net - 使用 VB.net 设置 Selenium

java - JSON映射器类中的错误

java - tools.jar 依赖

java - JHipster 后端 - 社交登录

java - 无法找到位于框架内且靠近网络表的网络

ruby - 在 headless (headless) EC2 机器上运行 Selenium ?