【问题标题】:Selenium Python I am trying to select a drop down from a nested span tag using XPATH or CSS selectorSelenium Python 我正在尝试使用 XPATH 或 CSS 选择器从嵌套的 span 标签中选择一个下拉列表
【发布时间】:2015-10-23 09:38:53
【问题描述】:

我正在尝试为似乎在嵌套 span 标签中的下拉元素计算 XPATH 或 CSS。 我想找到标签 我可以在下拉列表上方找到文本,但我无法通过 span 标签找到下拉元素。

我有 XPATH 可以访问下拉列表上方的文本。 XPATH 是:

//span[contains(text(), "Select a data preview to import configuration from")]

如果我尝试使用previous::span[2] 它会走得太远。

//span[contains(text(), "Select a data preview to import configuration from")]/preceding::span[2]

HTML sn-p 是:

<div class="GPI5XK1CM" style="padding-right: 16px;position:relative;outline:none;" __idx="0" onclick="">
<div style="position:absolute;display:none;"/>
<div>
<span/>
<span>
<span title="" style="font-weight:bold;">Select a data preview to import configuration from</span>
</span>
<span/>
<span>
<span class="" title="" style="display:block;"/>
</span>
<span/>
<span/>
<span/>
<span/>
<span/>
<span>
<span class="" title="None" style="white-space:nowrap;overflow:hidden;text-overflow:ellipsis;empty-cells:show;">
    <select tabindex="-1">
        <option selected="selected" value="None">None</option>
        <option value="CRMINVALID_07102015">CRMINVALID_07102015</option>
        <option value="LADEMO_crm2_Chrome">LADEMO_crm2_Chrome</option>
        <option value="LADEMO_CRM_DONOTCHANGE_CHROME">LADEMO_CRM_DONOTCHANGE_CHROME</option>
        <option value="LADEMO_ESCR_DO_NO_CHANGE_CHROME">LADEMO_ESCR_DO_NO_CHANGE_CHROME</option>
        <option value="Lademo_odb_Data">Lademo_odb_Data</option>
        <option value="test">test</option>
    </select>
    </span>
    </span>
</div>

我可以使用什么 XPATH 或 CSS 来访问下拉菜单? CSS 更快,那很好。

我想我现在已经解决了一个问题,但不确定这是否是一个好方法。 这个对我有用:

//span[contains(text(), "Select a data preview to import configuration from")]/preceding::span[1]//../span//../select
  • 首先搜索带有文本 Select a data preview to import configuration from 的 span 元素
  • 然后找到第一个span标签/preceding::span[1]
  • 然后找到第一个跨度标签下方的所有跨度标签 //../span
  • 然后在 span 标签内的任何位置找到下拉菜单 //../select

如果结构发生变化,使用 //../select 它仍然可以工作。

这是正确的方法吗?

谢谢, 里亚兹

【问题讨论】:

  • 您要查找哪个元素?
  • 选择标签,

标签: css selenium xpath selenium-webdriver webdriver


【解决方案1】:

我有几个 CSS 选择器,你可以试试。第一个应该足够了,如果没有,第二个应该是唯一的。

"select[tabIndex='-1']"
"span[title='None'] > select[tabIndex='-1']"

【讨论】:

    【解决方案2】:

    您可以使用以下 xpath 获取所有选项值:

    //span[@title='None']/select/option/text()

    【讨论】:

      【解决方案3】:

      CSS 示例。这假设只有一个名为“无”的跨度。

      $$("span[title='None']>select>option[value='whateveroptionyouseek']")
      

      你也可以侥幸逃脱:

      $$("span[title='None'] option[value='whateveroptionyouseek']")
      

      【讨论】:

        猜你喜欢
        • 2023-01-29
        • 1970-01-01
        • 1970-01-01
        • 2017-03-14
        • 2014-09-01
        • 2022-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多