【问题标题】:Can't select an option from a dropdown menu无法从下拉菜单中选择选项
【发布时间】:2017-01-10 16:07:20
【问题描述】:

我是硒的新手。从下拉菜单中选择元素时我遇到了很多麻烦。我正在使用 PhantomJS 实现它 - 使用 Firefox 工作的相同代码,因为 Webdriver 无法使用 PhantomJS 工作。我需要使用 PhantomJS 开发代码以在 VM 上运行它。

环境设置 {"browserName":"phantomjs","version":"2.1.1","driverName":"ghostdriver","driverVersion":"1.2.0","platform":"windows-7 -32bit","硒版本":"3.0.1 2016-10-18"}

这是我尝试过但没有奏效的方法:

  • 获取“Select”对象并使用可用方法(selectByVisibleText - selectByIndex - selectByValue) - {“errorMessage”:“元素当前不可见,可能无法操作”}
  • 点击下拉菜单,然后点击元素(尝试了不同的按类型和不同的 HTML 属性:div - input - select -->)
  • 从“Select”对象(getOptions)中获取所有可用选项并点击所需元素{“errorMessage”:“元素当前不可见,可能无法操作”}
  • 将文本直接发送到“Select”对象(sendKeys){“errorMessage”:“元素当前不可交互,可能无法操作”}

这些方法(有些方法是在 stackoverflow 上找到的)都不适合我。请帮我找到解决方案;希望这个问题对其他人也有用。

提前致谢!

示例代码1:

Select dropdownAvailableAverageDroveKM = new Select(driver.findElement(By.id("sel_percorrenza")));
dropdownAvailableAverageDroveKM.selectByIndex(1);

示例代码2:

driver.findElement(By.xpath("//input[@value='10.000 - 20.000']")).click();
driver.findElement(By.xpath("//li[@data-value='01']")).click();

示例代码 3:

Select dropdownAvailableAverageDroveKM = new Select(driver.findElement(By.id("sel_percorrenza")));
List<WebElement> percorrenze = dropdownAvailableAverageDroveKM.getOptions();
for (int i = 0; i < percorrenze.size(); i++) {
    if (i == 2) {
        percorrenze.get(i).click();
    }
}

示例代码 4:

driver.findElement(By.id("sel_percorrenza")).sendKeys("0 - 10.000");

这里是 HTML:

<div class="selectContainer select-wrapper required invalid">
   <span class="material-icons caret">arrow_drop_down</span><input type="text" class="select-dropdown ipt-sel_percorrenza valid" data-activates="select-options-6e6bc713-38a9-6d84-6d1d-4f98ac98a935" value="10.000 - 20.000" readonly="" data-search-options="false" placeholder="" aria-invalid="false">
   <ul id="select-options-6e6bc713-38a9-6d84-6d1d-4f98ac98a935" class="dropdown-content select-dropdown" style="width: 269px; position: absolute; top: 0px; left: 0px; opacity: 1; display: none;">
      <li class="active" data-value=""><span>Seleziona</span></li>
      <li class="" data-value="01"><span>0 - 10.000</span></li>
      <li class="" data-value="02"><span>10.000 - 20.000</span></li>
      <li class="" data-value="03"><span>20.000 - 30.000</span></li>
      <li class="" data-value="04"><span>oltre 30.000</span></li>
   </ul>
   <select name="oggettoAssicuratoModel.veicolo.percorrenza" class="required initialized invalid" id="sel_percorrenza" aria-required="true" aria-invalid="true">
      <option value="">Seleziona</option>
      <option value="01">0 - 10.000</option>
      <option value="02" selected="selected">10.000 - 20.000</option>
      <option value="03">20.000 - 30.000</option>
      <option value="04">oltre 30.000</option>
   </select>
</div>

【问题讨论】:

    标签: java html selenium phantomjs


    【解决方案1】:

    例外情况需要设置窗口大小:

    driver.manage().window().setSize(new Dimension(1366, 768)); // fake browser to do something on GUI
    

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      试试这个

      Select dropdown = new Select(driver.findElement(By.xpath("//select[contains(@id,'sel_percorrenza')]")));
      dropdown.selectByVisibleText("0 - 10.000");
      

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 2023-03-31
        • 2017-03-23
        • 2023-03-29
        • 1970-01-01
        • 2019-07-30
        • 2021-06-28
        • 1970-01-01
        • 2017-01-16
        相关资源
        最近更新 更多