javascript - 无法使用 Selenium Webdriver 遍历下拉列表

标签 javascript selenium selenium-webdriver dropdown dropdownbox

enter image description here我正在尝试使用这段代码遍历下拉列表:

new WebDriverWait(driver, 50).until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id
> =\\\"s2id_autogen4_search\\']"))).click();   
    driver.findElement(By.xpath("//*[@id
> =\"s2id_autogen4_search\"]")).click();   
    driver.findElement(By.id("s2id_autogen4_search")).sendKeys("New
> York");  

我尝试自动化的下拉菜单的 HTML 是:

<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" class="select2-input" role="combobox" aria-expanded="true" aria-autocomplete="list" aria-owns="select2-results-4" id="s2id_autogen4_search" placeholder="" aria-activedescendant="select2-result-label-68">

详细 HTML 是:

<ul class="select2-results" role="listbox" id="select2-results-4"><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-22" role="option"><span class="select2-match"></span>Select the state where your business is located</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-23" role="option"><span class="select2-match"></span>Alabama</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-24" role="option"><span class="select2-match"></span>Alaska</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-25" role="option"><span class="select2-match"></span>Arizona</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-26" role="option"><span class="select2-match"></span>Arkansas</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-27" role="option"><span class="select2-match"></span>California</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-28" role="option"><span class="select2-match"></span>Colorado</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-29" role="option"><span class="select2-match"></span>Connecticut</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-30" role="option"><span class="select2-match"></span>Delaware</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-31" role="option"><span class="select2-match"></span>District Of Columbia</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-32" role="option"><span class="select2-match"></span>Florida</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-33" role="option"><span class="select2-match"></span>Georgia</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-34" role="option"><span class="select2-match"></span>Hawaii</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-35" role="option"><span class="select2-match"></span>Idaho</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-36" role="option"><span class="select2-match"></span>Illinois</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-37" role="option"><span class="select2-match"></span>Indiana</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-38" role="option"><span class="select2-match"></span>Iowa</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-39" role="option"><span class="select2-match"></span>Kansas</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-40" role="option"><span class="select2-match"></span>Kentucky</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-41" role="option"><span class="select2-match"></span>Louisiana</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-42" role="option"><span class="select2-match"></span>Maine</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-43" role="option"><span class="select2-match"></span>Maryland</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-44" role="option"><span class="select2-match"></span>Massachusetts</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-45" role="option"><span class="select2-match"></span>Michigan</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable select2-highlighted" role="presentation"><div class="select2-result-label" id="select2-result-label-46" role="option"><span class="select2-match"></span>Minnesota</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-47" role="option"><span class="select2-match"></span>Mississippi</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-48" role="option"><span class="select2-match"></span>Missouri</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-49" role="option"><span class="select2-match"></span>Montana</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-50" role="option"><span class="select2-match"></span>Nebraska</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-51" role="option"><span class="select2-match"></span>Nevada</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-52" role="option"><span class="select2-match"></span>New Hampshire</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-53" role="option"><span class="select2-match"></span>New Jersey</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-54" role="option"><span class="select2-match"></span>New Mexico</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-55" role="option"><span class="select2-match"></span>New York</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-56" role="option"><span class="select2-match"></span>North Carolina</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-57" role="option"><span class="select2-match"></span>North Dakota</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-58" role="option"><span class="select2-match"></span>Ohio</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-59" role="option"><span class="select2-match"></span>Oklahoma</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-60" role="option"><span class="select2-match"></span>Oregon</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-61" role="option"><span class="select2-match"></span>Pennsylvania</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-62" role="option"><span class="select2-match"></span>Rhode Island</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-63" role="option"><span class="select2-match"></span>South Carolina</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-64" role="option"><span class="select2-match"></span>South Dakota</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-65" role="option"><span class="select2-match"></span>Tennessee</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-66" role="option"><span class="select2-match"></span>Texas</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-67" role="option"><span class="select2-match"></span>Utah</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-68" role="option"><span class="select2-match"></span>Vermont</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-69" role="option"><span class="select2-match"></span>Virginia</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-70" role="option"><span class="select2-match"></span>Washington</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-71" role="option"><span class="select2-match"></span>West Virginia</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-72" role="option"><span class="select2-match"></span>Wisconsin</div></li><li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-73" role="option"><span class="select2-match"></span>Wyoming</div></li></ul>

最佳答案

正如您所提到的,我们可以输入一些内容来下拉,在这种情况下您可以尝试类似的内容:

代码:

WebElement drop_down = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input[id*='id_autogen'][type='text'][role='combobox']")));  
drop_down.click();
drop_down.sendKeys("New York");  

更新1:

如果您首先单击下拉,此代码将起作用。

请注意,您必须点击下拉菜单,然后您可以使用此代码:

List<WebElement> options = driver.findElements(By.cssSelector("ul#select2-results-4.select2-results[role='listbox'] li span")); 
            for(WebElement option : options) {
                if(option.getText().trim().contains("New York")) {
                    option.click();
                }
            }

截图 enter image description here

关于javascript - 无法使用 Selenium Webdriver 遍历下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51476684/

相关文章:

c# - 简单的异步回调替代方案

javascript - 如何在 Heroku 上部署 Selenium-python

java - 如何创建一个使用 Wait.Until 的方法,忽略在 selenium webdriver 中抛出异常

java - Selenium moveToElement() 读取工具提示不起作用

javascript - flexslider css 导致图像消失

javascript - 给定一个数组,每次调用函数时一次返回一个值

java - 如何在 Selenium 中自动弹出此弹出窗口?

python - 是否可以使用 XPATH 和 Selenium 从 Python 中的特定 div 开始计数?

java - 在浏览器的正常 UI 模式下使用 Selenium-Java 运行测试的 headless (headless) chrome

javascript - 更新 $interval 函数中的 $scope