Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为webElement编写动态xpath?_Xpath_Selenium Webdriver_Dynamic - Fatal编程技术网

如何为webElement编写动态xpath?

如何为webElement编写动态xpath?,xpath,selenium-webdriver,dynamic,Xpath,Selenium Webdriver,Dynamic,我经历了很多关于stackoverflow的问题,但没有找到解决问题的方法 -网页上有一个元素具有text=“Success” 现在我想定位那个元素,元素的id一直在变化。还有其他一些类似名称的元素,如成功、不成功、成功等。。在同一页上,但我想搜索特定元素“Success”。我该怎么做?在这种情况下, 我认为XPath的-startsWith()和contains()方法不起作用 您可以使用以下xpath来查找它。i) //[text()='Success']或ii)/[.='Success']

我经历了很多关于stackoverflow的问题,但没有找到解决问题的方法

-网页上有一个元素具有text=“Success” 现在我想定位那个元素,元素的id一直在变化。还有其他一些类似名称的元素,如成功、不成功、成功等。。在同一页上,但我想搜索特定元素“Success”。我该怎么做?在这种情况下,

我认为XPath的-startsWith()和contains()方法不起作用


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

您可以始终使用其他属性。您不限于id。 下面是几个例子:

基本xpath语法:

//tag[@tag-attribute='arrtibute-value']
//*[contains(@tag-attribute,'attribute-value')]
//tag[text()='inner-text']
//*[contains(text(),'inner-text')]
其中:
tag
=html标记
*
=标记通配符-匹配任何标记
标记属性
=标记内的任何属性(名称、id、类…)
属性值
=指定标记属性的值

考虑以下示例:

<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>
就我个人而言,我更喜欢使用其他属性而不是文本,这主要是因为文本可能具有保留字符,这可能会弄乱xpath

您还可以使用以下内容检查xpath的有效性:
  • Chrome开发工具(F12)>元素选项卡>点击CTRL+F,而在元素选项卡>粘贴xpath>有效元素下将突出显示
  • Chrome开发工具(F12)>控制台选项卡>输入:$x(“yourxpath”)>点击回车键>匹配元素将显示在控制台上。

    您可以尝试以下操作:-

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

    您可以共享HTML代码吗?使用类似于//div[contains(text(),'Success')的XPATH,在这里您可以用正在查找的标记替换div。
     //*[@text()='Success']