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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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
正在尝试从此HTML片段创建XPath_Xpath_Selenium - Fatal编程技术网

正在尝试从此HTML片段创建XPath

正在尝试从此HTML片段创建XPath,xpath,selenium,Xpath,Selenium,我写XPath已经玩了一段时间了,但是我想不出我到底想要什么 我正在尝试基于已知文本(下面代码段中的myidentity)为链接(下面代码段中的click1和click2)编写XPath。有人能研究一下并提出可能的解决方案吗 HTML代码段: <div class="abc"> <a onclick="mycontroller.goto('xx','yy'); return false;" href="#"> <img src="images/contr

我写XPath已经玩了一段时间了,但是我想不出我到底想要什么

我正在尝试基于已知文本(下面代码段中的myidentity)为链接(下面代码段中的click1和click2)编写XPath。有人能研究一下并提出可能的解决方案吗

HTML代码段:

<div class="abc">
  <a onclick="mycontroller.goto('xx','yy'); return false;" href="#">
    <img src="images/controls/inheritance.gif"/>
  </a>
  myidentity
  <span>
    <a onclick="mycontroller.goto('xx','yy'); return false;" href="#">click1</a>
    <a onclick="mycontroller.goto('xx','yy'); return false;" href="#">click2</a>
  </span>
</div>

我的身份

请参阅宏的答案-应使用此表格

//div[text()[contains(., "myidentity")]]/span/a[2]
以下内容仅适用于包含div中的一段文本

您需要根据包含身份文本的文本进行选择

click1的Xpath

//div[contains(text(),"myidentity")]/span/a[1]
click2的Xpath

//div[contains(text(),"myidentity")]/span/a[2]

如果看不到HTML的其余部分,很难说,但以下内容应该可以工作:

//div[text()[contains(., "myidentity")]]/span/a

这里不需要使用XPath,可以使用CSS定位器。在不同的浏览器中,它们通常更快、更兼容

css=div:contains(myidentity) > span a:nth-child(1) //click1
css=div:contains(myidentity) > span a:nth-child(2) //click2

请注意,
仅用于解决Selenium使用的CSS定位器库中的一个错误。

Html代码片段:===========================================myidentity请注意,在同一页面上有类似的click1和click2,但有不同的myidentity文本。这就是为什么我们需要基于MyIdentity编写这样的xpath。请将所有代码放在问题的正文中,并使用代码格式(图标看起来像二进制)。prodigitalson,我在问题的正文中添加了html代码,但我在发布注释后没有看到它出现,这就是为什么我在注释字段中粘贴了html代码。对不起,事实上这是在问题的主体部分。。。它是jsutn呈现html,而不是在pre/code标记中。我为您修复了它:-)在示例中,假设div标记有多个文本元素,这将导致上述失败,因为包含的第一个参数必须是单个element@Macros:没错
//div[text()[contains(,“myidentity”)]]/span/a[2]
更好。+1-更新了我的答案以反映不同的谓词great…谢谢你们,这是你们提供的XPath,很好。你们应该接受宏的答案,因为他有你们实际使用的东西。