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

时间:2018-06-21 02:20:34

标签: selenium xpath css-selectors selenium-ide

请在开发人员工具窗口中看到下图,该图显示了网页的代码,并向我建议“折旧模型”的正确选择器。以红色突出显示的文本是恒定的,但是周围的文本是动态的。因此,我尝试使用包含选择器来查找但未成功。我想避免使用XPATH,因为div元素前后的数量可能会不断变化。

我正在使用Selenium IDE,因此RC / Webdriver的C#/ Java代码无济于事。

Web Page Code in Developer Tools

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

但是没有用。

建议。我被困住了。谢谢。

2 个答案:

答案 0 :(得分:1)

我想这是正确的方法:

<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>

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

答案 1 :(得分:1)

在尝试Locator Strategy时,如下所示:

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

不工作的原因

  

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')]