我需要为表达式创建Xpath,如-
(trim(STRING_1)=upper(STRING_2))但不幸的是,这个表达式位于某个编辑器中,代码是-
<div class="ace_line" style="height: 16px;">
<span class="ace_paren ace_lparen"> ( </span>
<span class="ace_support ace_function"> trim </span>
<span class="ace_paren ace_lparen"> ( </span>
<span class="ace_storage ace_type"> STRING_1 </span>
<span class="ace_paren ace_rparen"> ) </span>
<span class="ace_keyword ace_operator"> = </span>
<span class="ace_support ace_function"> upper </span>
<span class="ace_paren ace_lparen"> ( </span>
<span class="ace_storage ace_type"> STRING_2 </span>
<span class="ace_paren ace_rparen"> )) </span></div>(为最佳可视化提供额外空间)
如何为整个表达式创建Xpath?
应该是-
//*[contains(text(),'(', 'trim', '(', 'STRING_1', ')', '=', 'upper', '(', 'STRING_2', '))')]但这不管用
发布于 2022-03-16 11:06:19
可以在单个contains()表达式中使用多个XPath,如下所示:
"//*[contains(text(),'(') and contains(text(),'trim') and contains(text(),'STRING_1') and contains(text(),'=') and contains(text(),'upper') and contains(text(),'STRING_2') and contains(text(),')') and contains(text(),'))')]"您还可以使用以下内容:
"//div[.//span[contains(text(), 'trim') and .//span[contains(text(), 'upper')]]"发布于 2022-03-16 14:33:54
文本trim和upper可以位于<div class="ace_line"...>中的任意位置。
解决方案
您可以使用以下
"//div@class='ace_line'.//spancontains(.,'trim')][.//spancontains(.,'upper')]"
STRING_1的情况:“//divcontains(翻译(.,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'),'STRING_1')"
STRING_1和STRING_2的情况:“//divcontains(翻译(.,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz'),'STRING_1')"
参考文献
您可以在以下网站找到相关的详细讨论:
https://stackoverflow.com/questions/71495924
复制相似问题