【问题标题】:Dropdown list element not found using selenium webdriver使用 selenium webdriver 找不到下拉列表元素
【发布时间】:2018-09-23 16:25:59
【问题描述】:

我在使用 ID 选择下拉列表时遇到问题,因为它是动态的。

ID中有一个固定部分,所以我尝试使用contains,但我似乎无法掌握它。

我的代码部分使用 selenium webdriver java:

Select dropdown = new Select (driver.findElement(By.xpath("//select[contains(@id,'_listSelect')]")));

使用 firebug 的下拉 HTML(选择部分):

<div id="00B70000008WMdr_topNav" class="topNav primaryPalette">
    <div class="controls">
        <img class="pageTitleIcon" title="Case" alt="Case" src="/img/s.gif">
        <select id="00B70000008WMdr_listSelect" class="title" title="View:" onchange="ListViewport.instances['00B70000008WMdr'].showFeedOrListView(this.options[this.selectedIndex].value)" name="fcf">
           ...
        </select>
    </div>
</div>

【问题讨论】:

  • 在 Chrome f12 搜索栏中尝试 //select[contains(@id,'_listSelect')],然后在代码中实现它并检查它是否突出显示 DOM 中的元素或者我相信名称如果是,则对于您的选择标签是静态的。
  • 你知道如果它没有突出显示我怎么能得到它?我认为我的问题出在这个特定的部分
  • 我累了,它突出了部分..我不知道可能出了什么问题
  • 找到多少匹配项?如果有多个匹配项,您可能需要进一步缩小 xpath 的范围,方法是使用数组或尝试使用其他内容进行搜索,例如 //select[@title='View:']
  • @MonnaKhaled 让我知道它在 chrome 中突出显示时显示的计数,并分享您在运行脚本时遇到的错误。

标签: java selenium-webdriver contains


【解决方案1】:

试试这个:

Select dropdown = new Select (driver.findElement(By.css("select[id$='_listSelect']")))

【讨论】:

  • css 是否对 id 进行部分匹配?我认为您的解决方案行不通。加上内部的双引号应该转义或改为单引号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多