知道为什么这个xpath不起作用?

时间:2015-12-02 21:38:11

标签: java selenium xpath selenium-webdriver

这里是html元素和我正在运行的命令,它正在检查是否" lol"存在于页面上。它没有找到" lol"并且不确定原因。

<svg data-reactid=".0.1.0.0.1.0" height="2129" width="1252">
  <g data-reactid=".0.1.0.0.1.0.$http=2//10=1203=167=127=29090/img/103?token=0a11944b491366ab96caf34c8e3991d436c86d655">
    <image height="2129px" width="1252px"xlink:href="http://10.203.67.27:9090/img/103?token=a11944b491366ab96caf34c8e3991d436c86d655">
  </g>
  <g data-reactid=".0.1.0.0.1.0.1">
     <line class="severity-inactive " data-reactid=".0.1.0.0.1.0.1.$conn2" y2="1209.895121951221" x2="677.0326086956554" y1="708.8012195121894" x1="1126.1195652173908" style="stroke-width: 7;">
     <line class="severity-inactive " data-reactid=".0.1.0.0.1.0.1.$conn4" y2="329.7353658536632" x2="841.593360995849" y1="708.8012195121894" x1="1126.1195652173908" style="stroke-width: 7;">
  </g>
  <g data-reactid=".0.1.0.0.1.0.2">
    <g data-reactid=".0.1.0.0.1.0.2.$node4">
      <circle class="severity3 " data-reactid=".0.1.0.0.1.0.2.$node4.0" r="9.674435999999993" cy="708.8012195121894" cx="1126.1195652173908">
      <g data-reactid=".0.1.0.0.1.0.2.$node4.1">
         <rect class="node-label-background"  data-reactid=".0.1.0.0.1.0.2.$node4.1.0" height="21" width="22" y="716.8012195121894" x="1115.1195652173908">
         <text class="node-label" data-reactid=".0.1.0.0.1.0.2.$node4.1.1" y="721.3012195121894" x="1118.1195652173908">lol</text>
    </g>
 </g>


 By.xpath(//*[name()='svg']/*[name()='text' and text()='"+lol+"'])

3 个答案:

答案 0 :(得分:0)

这是正确的xpath:

By.xpath("//*[name()='svg']//*[name()='text' and text()='lol']")

添加引号,使用'lol'字符串(不是变量)并在text元素定位器之前添加第二个斜杠(这不是svg的直接子项)。

答案 1 :(得分:0)

我认为你错过了&#39; /&#39;

你的:By.xpath(//*[name()='svg']/*[name()='text' and text()='"+lol+"'])

我的:By.xpath(//*[name()='svg']//*[name()='text' and text()='"+lol+"'])

答案 2 :(得分:0)

怎么样 //svg//text[contains(text(),'lol')]

(为了一个标记而选择//*,其名称为您所知(svg)效率非常低,直接选择它会好得多;类似text的情况 - 你已经知道了标签的名称,所以只需使用它;最后contains处理搜索文本可能只是整个文本的一部分的事实。