Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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/0/xml/12.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
Java selenium xpath表达式上的语法错误_Java_Xml_Selenium_Xpath - Fatal编程技术网

Java selenium xpath表达式上的语法错误

Java 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

我正在构建一个selenium
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
。我看不到任何开头,谢谢:)它短了汉克斯:)它短了