【问题标题】:Error : Getting this exception while trying to select from list dropdown in selenium "option element is not in a select"错误:尝试从 selenium 中的列表下拉列表中进行选择时出现此异常“选项元素不在选择中”
【发布时间】:2020-03-30 13:01:50
【问题描述】:

我一直在尝试从列表下拉列表中选择一个元素(不是选择下拉列表)。每次我尝试这个时,selenium 都能够使用 xpath 定位元素,但它不会单击元素。相反,它会抛出一个异常:

org.openqa.selenium.JavascriptException: javascript error: option element is not in a select

HTML:

<list id="cmds" class="dropdown-menu">

    <option value="{YEAR}">{YEAR}</option>
    <option value="{DAY}">{DAY}</option>
    <option value="{HOME}">{HOME}</option>

</list>

【问题讨论】:

  • 请添加页面中的 HTML 和您当前的代码尝试。
  • @JeffC 谢谢提醒。这个好吗? :)
  • 您忘记包含当前代码,但我已经看到了问题,并且正如错误消息中所述。 OPTION 标记不在 SELECT 标记内。如果您正确复制了 HTML,则该网站的 HTML 格式似乎有误。

标签: list selenium xpath dropdown


【解决方案1】:

首先您需要点击下拉菜单。 然后使用下面的 xpath 返回 WebElements 列表(下拉值)并使用 for 循环您可以单击任何下拉值。

//list[@id='cmds']/option

Java 中的示例代码:

WebElement dropDown = driver.findElement(By.xpath("enter xpath for the dropdown"));
dropDown.click();
List<WebElement> valuesInDropDown = driver.findElements(By.xpath("//list[@id='cmds']/option"));
for (WebElement value : valuesInDropDown) {
    if (value.getText().equals("{YEAR}"))
        value.click();
}

【讨论】:

  • 这太完美了。对我来说,我不想使用 for 循环。这就是我寻找其他选择的原因:)
【解决方案2】:

这可以通过使用 selenium 提供的 Action 库来实现。

            import org.openqa.selenium.interactions.Actions;

            WebElement newitem= driver.findElement(By.xpath("//option[text()=\"{YEAR}\"]"));
            Actions action = new Actions(driver);
            action.build();
            action.moveToElement(newitem).click();
            action.perform();

这会悬停在 xpath 找到的元素上并点击它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    相关资源
    最近更新 更多