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

我无法找到下拉列表的动态 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>


慕虎7371278
浏览 98回答 1
1回答

慕田峪9158850

首先,不要写太长的 xpaths。有更好的方法来访问元素,而不是做那些令人毛骨悚然的事情。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){&nbsp; &nbsp; System.out.println("names of the divisions " + element.getText());&nbsp; &nbsp; if(element.getText().contains("Mumbai"));&nbsp; &nbsp; &nbsp; &nbsp; element.click();}如果无法像上面那样访问下拉菜单,只需获取父 div 的 Id,如下所示:String dropdownXpath = "//div[@id='some-id']input[@class='vs_dropdown-menu' and @role='listbox']";不要通过爬行 html 标签来查找元素来浪费时间。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java