【问题标题】:Selenium WebDriver: How to select a value in a span dropdown?Selenium WebDriver:如何在跨度下拉列表中选择一个值?
【发布时间】:2018-06-04 14:42:46
【问题描述】:

我试图让我的 Selenium 脚本点击下拉菜单中的一个值。但是,在我最初单击下拉列表后,我无法在下拉列表中执行任何操作。我在网上查过,只有当下拉菜单是“选择”时才能找到答案。

这是下拉列表的 HTML:

<span class="select2-selection__rendered" title="1st item"
      id="select2-id_template_or_inspection-container">
</span>

这是我点击下拉菜单的代码 sn-p:

//Choose a Template from Dropdown

WebElement dropdownBtn = webDriver.findElement(
            By.id("select2-id_template_or_inspection-container"));

dropdownBtn.click();

这是我尝试单击下拉列表中的值的代码 sn-p:

WebElement dropdownItemBtn = webDriver
      .findElement(By.id("select2-id_template_or_inspection-result-hlwt-tmpl-2583"));
dropdownItemBtn.click();

但是,每次重新加载页面时,下拉列表中值的 ID 都会发生变化。

感谢您的帮助!

【问题讨论】:

  • 请创建一个Minimal, Complete, and Verifiable example,其中包含您用来尝试完成此任务的脚本。如有必要,还要标记您的脚本编写的语言。
  • 谢谢!我已经更新了问题
  • 您能否也包含此下拉列表所在的 URL?如果 ID 发生变化,那么您将不得不尝试使用其他方式选择元素,例如 CSS 选择器。
  • @Long,下拉列表至少包含选项,您给定的 HTML 代码不包含选项列表的 HTML 代码。请找出它们并更新问题(不在评论中)。如果您找不到它们,请提供一个公共 URL(如果您的应用有)。或者你知道你的下拉列表是一些已知的插件,谎言 jQuery 下拉插件。
  • 您能否确认一下,span tag id 每次都是完全改变的,还是有些部分是不变的?

标签: java html selenium


【解决方案1】:

你可以试试这个方法:

  1. 这就是你所做的,点击 span 以显示其下拉项

    //Choose a Template from Dropdown
    
    WebElement dropdownBtn = webDriver.findElement(By.id("select2-id_template_or_inspection-container"));
    dropdownBtn.click();
    
  2. 因为每次重新加载页面时下拉列表中值的 ID 都会更改,因此您可以使用 dropdownBtn 将其子项/子项作为下拉项查找,然后单击所需的下拉项:

    List<WebElement> dropdownItems = dropdownBtn.findElements(By.tagName("tagNameOfDropdownItems"));
    dropdownItems.get(0).click(); // click on first Dropdown, for example
    

因为ID是动态变化的,所以我们尝试通过tagName来查找元素。希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2014-12-28
    • 1970-01-01
    • 2015-05-19
    • 2014-02-22
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    相关资源
    最近更新 更多