无法找到正确的目标选择器来单击元素

Unable to find correct Target selector to click an element

请查看下图,其中显示了开发人员工具中网页的代码 window,并告诉我 'Depreciation Models' 的正确选择器。以红色突出显示的文本是不变的,但周围的文本是动态的。所以我尝试使用 contains 选择器来定位但没有成功。我想避免使用 XPATH,因为 div 元素前后的数量可能会不断变化。

我正在使用 Selenium IDE 因此 RC/Webdriver 的 C#/Java 代码不会有太大帮助。

Selenium IDE生成的目标路径是这样的:

css=#dhxId_rgWATog7lC3E_27572|6059|6152 > td.sub_item_text > div.sub_item_text

我试过了

css=contains('27572') > td.sub_item_text > div.sub_item_text

但是没用。

请多多指教。我卡住了。谢谢

我猜这是正确的方法:

<style>
   [id*="27572"] > td.sub_item_text > div.sub_item_text{
      color:red;
   }

<table>
        <tbody>
            <tr id="dhxId_rgWATog7lC3E_27572|6059|6152" class="sub_item">
                <td class="sub_item_icon">
                     <i class="fa fa-user epc-down-circled-2"></i>
                </td>
                <td class="sub_item_text">
                     <div class="sub_item_text"> Depriciations Models</div>
                </td>
            </tr>
        </tbody>
    </table>

它将设置所有具有包含“27572”的 id 属性值及其内部的元素。

当您尝试 时 :

css=contains('27572') > td.sub_item_text > div.sub_item_text

不工作的原因

  • 根据您提供的 HTML 的快照,27572 不是 innerText 而是 id 属性.
  • 的部分字符串
  • 根据

The :contains pseudo-class isn't in the CSS Spec and is not supported by either Firefox or Chrome (even outside WebDriver).

解决方案

您可以根据现有 DOM Tree 使用以下 xpath:

xpath=//tr[@class='sub_item'][contains(@id,'27572')]//td[@class='sub_item_text']/div[@class='sub_item_text'][contains(.,'Depreciations Models')]