我想从<span>
标记中捕获错误消息文本,如果不存在,则从其父项div
捕获错误消息文本。为此,我需要一个有效的xpath表达式,如果可能的话,它可以将两种情况都作为一种情况处理。
这是html代码。 要么是版本1:
<div class='error-message'>
some error message
</div>
或版本2:
<div class='error-message'>
<span>
some other error message
</span>
</div>
因此,xpath是:
v1://div[@class='error-message']
v2://div[@class='error-message']/span
现在我需要以某种方式将v1和v2结合起来(也许用一些“或”表达式?)。
如果尝试过:
//div[@class='error-message']/descendant-or-self::*
,但是当跨度存在时,它会找到两个元素(更喜欢跨度!)//div[@class='error-message']/descendant-or-self::span
,但是当跨度不存在时什么也找不到我还尝试了以下答案:XPath select child if child exists, else select parent,但使用代码.../(span, .[not(span)])
似乎无效,至少在Ranorex中如此。
答案 0 :(得分:0)
您可以尝试以下方法:
//div[@class='error-message']/descendant-or-self::*[@innertext!='']
注意:有一个限制,如果文本内容为空,将无法使用:(
答案 1 :(得分:0)
由于您不知道该错误消息是否会出现在div标签或span标签中,因此您可以尝试以下方法
.//未知[@ innertext〜'错误消息']
此外,如果在原始帖子中的div标签之前,正确识别了该对象,它将起作用。