这里是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+"'])
答案 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
处理搜索文本可能只是整个文本的一部分的事实。