Java selenium xpath表达式上的语法错误
我正在构建一个seleniumJava selenium xpath表达式上的语法错误,java,xml,selenium,xpath,Java,Xml,Selenium,Xpath,我正在构建一个seleniumfindElement by.xpath表达式,非常复杂,似乎存在语法错误 我不太懂XML语言,所以犯了个错误。显然,有人能告诉我错误在哪里吗 谢谢 我在网页上有一个项目列表,每个项目都有子项目,我想要一个特定的子项目,我知道名称和子名称 html代码类似于: <table id="list_proj" class="table tablebas table-striped table-bordered"> <thead> <t
findElement by.xpath
表达式,非常复杂,似乎存在语法错误
我不太懂XML语言,所以犯了个错误。显然,有人能告诉我错误在哪里吗
谢谢
我在网页上有一个项目列表,每个项目都有子项目,我想要一个特定的子项目,我知道名称
和子名称
html代码类似于:
<table id="list_proj" class="table tablebas table-striped table-bordered">
<thead>
<tbody style="height:1em;overflow-y:scroll"></tbody>
<tbody style="height:1em;overflow-y:scroll"></tbody>
<tbody style="height:1em;overflow-y:scroll">
<tr class="caption">
<td class="app_name" style="background-color:#EFEFEF;" colspan="11">
<b>
<a href="?page=applications&mode=edit&app_id=3" style="padding-left:10px;" data-icon=""> Application SEVo</a>
</b>
</td>
</tr>
<tr class="data"></tr>
<tr class="data"></tr>
<tr class="data">
<td title="Pas de commentaire !" style="text-align:left">
<img alt="MCO" src="/colibri/images/corner-dots.gif"></img>
<a href="?page=projects&mode=view&project_id=9" style="padding-left:5px">MCO</a>
</td>
<td>0.50</td>
<td></td>
<td colspan="2">
</tr>
<tr class="data">
</tbody>
<tbody style="height:1em;overflow-y:scroll"></tbody>
</table>
很抱歉造成混乱^^'我不知道使用selenium的xPath,但我认为语法错误应该在下面一行
.descendant::(a[contains(text(),'"+subName+"')])[1])[1]
应该是
.descendant::(//a[contains(text(),'"+subName+"')])[1])[1]
??(注意“//a”)我不知道selenium的xPath,但我认为语法错误应该在下面的行中
.descendant::(a[contains(text(),'"+subName+"')])[1])[1]
应该是
.descendant::(//a[contains(text(),'"+subName+"')])[1])[1]
??(注意“//a”)它应该是类似于:
//a[contains(text(),'"+name+"')]/ancestor::tr[@class='caption']/following-sibling::tr[@class='data']//a[contains(text(),'"+subName+"')]
不要每次都使用
索引[1]
,如果您确定只返回一个元素,那么没有必要在每个后代或祖先调用中放置索引。它应该类似于:
//a[contains(text(),'"+name+"')]/ancestor::tr[@class='caption']/following-sibling::tr[@class='data']//a[contains(text(),'"+subName+"')]
不要每次都使用index
[1]
索引,如果您确定只返回一个元素,那么在每个子代或祖先调用中放置索引是没有意义的。使用下面的xPath
,哪一个更好:-
//a[contains(.,'"+name+"')]/ancestor::tr/following::a[contains(.,'"+subName+"')]
for eg. :- //a[contains(.,'Application SEVo')]/ancestor::tr/following::a[contains(.,'MCO')]
已更新..
另一个是:-
//a[contains(.,'"+name+"')]/following::a[contains(.,'"+subName+"')]
希望它能帮助您:)使用下面的xPath
哪一个更好:-
//a[contains(.,'"+name+"')]/ancestor::tr/following::a[contains(.,'"+subName+"')]
for eg. :- //a[contains(.,'Application SEVo')]/ancestor::tr/following::a[contains(.,'MCO')]
已更新..
另一个是:-
//a[contains(.,'"+name+"')]/following::a[contains(.,'"+subName+"')]
希望它能帮助你……)
这有太多的错误,很难知道从哪里开始。首先,我们不知道变量名称和子名称中包含什么-如果这些字符串包含单引号,则可能发生任何情况(注入攻击)。其次,当它应该使用“/”时,它似乎正在使用“.”作为路径中步骤之间的分隔符。第三,像“后代::”这样的轴后面的内容必须是节点测试,这排除了带括号的表达式
我认为你的方法确实有问题。用你不懂的语言写一个复杂的表达式,然后继续问语法错误是什么意思,这不是取得进展的好方法。(一旦您消除了语法错误,您会知道XPath的实际含义吗?)。阅读并正确地学习语言;不要在没有上驾驶课的情况下开车
这有太多的错误,很难知道从哪里开始。首先,我们不知道变量名称和子名称中包含什么-如果这些字符串包含单引号,则可能发生任何情况(注入攻击)。其次,当它应该使用“/”时,它似乎正在使用“.”作为路径中步骤之间的分隔符。第三,像“后代::”这样的轴后面的内容必须是节点测试,这排除了带括号的表达式
我认为你的方法确实有问题。用你不懂的语言写一个复杂的表达式,然后继续问语法错误是什么意思,这不是取得进展的好方法。(一旦您消除了语法错误,您会知道XPath的实际含义吗?)。阅读并正确地学习语言;不要在没有上驾驶课的情况下尝试驾驶汽车。您想在这里具体识别什么?我想单击链接subName您可以直接识别subName,是否需要使用名称
进行标识?很遗憾,是的,因为其他一些项目的子项目与您希望在此处标识的子项目完全相同?我想单击链接subName您可以直接标识subName,是否需要使用名称
进行标识?不幸的是,是的,因为某些其他项目具有相同的子项目。仍然无效:/why in line.“(祖先::td[@class='caption'])[1]”祖先在“()”内?是否正确?请使用以下xPath公式:(//a[contains(text(),“+name+”)][1]/祖先::tr[@class='caption'][1]/以下兄弟姐妹::td[@class='data']/后代::a[contains(text(),'subName')][1])[1]
它仍然无效:/为什么在行中?(祖先::td[@class='caption'][1]“祖先在“()”内?是否正确?请使用以下xPath公式:(//a[contains(text(),“+name+”)][1]/祖先::tr[@class='caption'][1]/以下兄弟姐妹::td[@class='data']/后代::a[contains(text(),'subName')][1])[1]
它不返回任何匹配项。您可以发布正确的HTML
。。。我可以在这里看到错误。。子名称
。。。这是存在a
的tr
。我看不到任何起始tr
它不返回任何匹配项。您可以发布正确的HTML
。。。我可以在这里看到错误。。子名称
。。。这是存在a
的tr
。我看不到任何开头,谢谢:)它短了汉克斯:)它短了