如何为webElement编写动态xpath?

时间:2017-05-29 07:18:24

标签: xpath selenium-webdriver dynamic

我在stackoverflow上遇到了很多问题,但没有找到我的问题的解决方案

- 网页上有一个文字=“成功”的元素 现在我想找到那个元素,元素的id不断变化。还有一些其他具有相似名称的元素 - 成功,不成功,成功等...在同一页面上但我想搜索特定元素“成功”。我该怎么办?在这种情况下,

  

我不认为 - startsWith()和contains()方法可以使用XPath。

3 个答案:

答案 0 :(得分:0)

您可以使用以下xpath来查找它。 i)// [text()=' Success']或ii)// [。=' Success']。

答案 1 :(得分:0)

您始终可以使用其他属性。你不仅限于身份证。 以下几个例子:

基本xpath语法:

//tag[@tag-attribute='arrtibute-value']
//*[contains(@tag-attribute,'attribute-value')]
//tag[text()='inner-text']
//*[contains(text(),'inner-text')]

<强>其中:
tag = html标记
* =标记通配符 - 匹配任何标记
tag-attribute =标记内的任何属性(name,id,class ...)
attribute-value =指定标记属性的值

请考虑以下示例:

<div id="countryDiv1">
<button type="button" class="btn btn-default" data-toggle="dropdown" data-id="ConsignorAddressCountryId" tabindex="1" id="randomGenerated">Text1</button>
</div>

<div id="countryDiv2">
<button type="button" class="btn btn-default" data-toggle="dropdown" data-id="ConsignorAddressCountryId" tabindex="2" id="randomGenerated">Text2</button>
</div>

此处我们有2个按钮具有相同的随机生成ID,但有一些差异,如tabindexinner text,父div的ID。

按钮1的示例xpath:

//button[@tabindex='1']
//button[@data-id='ConsignorAddressCountryId'][@tabindex='1']
//button[@data-id='ConsignorAddressCountryId'][text()='Text1']
//div[@id='countryDiv1']//button

就个人而言,我更喜欢使用其他属性而不是文本,主要是因为文本可能有保留字符可能会弄乱你的xpath。

您还可以使用以下方法检查xpath有效性:

  • Chrome开发工具(F12)&gt;元素标签&gt;在元素选项卡下按CTRL + F&gt;粘贴你的xpath&gt;有效元素将突出显示
  • Chrome开发工具(F12)&gt;控制台标签&gt;输入:$ x(“yourxpath”)&gt;点击回车键&gt;匹配元素将显示在控制台上。

  • 答案 2 :(得分:0)

    您可以尝试以下操作: -

     //*[@text()='Success']