首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果存在,则选择元素的子元素,否则选择父元素。

如果存在,则选择元素的子元素,否则选择父元素。
EN

Stack Overflow用户
提问于 2019-05-21 13:49:45
回答 2查看 682关注 0票数 1

我希望从<span>标记中捕获错误消息文本,或者如果它不存在,则从它的父标记捕捉错误消息文本,从它的父标记捕获错误消息文本。为此,我需要一个有效的xpath表达式,如果可能的话,它可以同时处理这两种情况。

这是html代码。它要么是版本1:

代码语言:javascript
复制
<div class='error-message'>
  some error message
</div>

或第2版:

代码语言:javascript
复制
<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::*,但当span存在时,它会发现这两个元素(更希望使用span!)
  • 当跨度不存在时,//div[@class='error-message']/descendant-or-self::span什么也找不到

我也尝试过,这个答案中给出的内容是:XPath select child if child exists, else select parent但是使用.../(span, .[not(span)])代码似乎是无效的,至少在Ranorex中是这样。

EN

回答 2

Stack Overflow用户

发布于 2019-05-27 05:20:19

您可以尝试以下方法:

代码语言:javascript
复制
//div[@class='error-message']/descendant-or-self::*[@innertext!='']

注意:如果文本内容为空,则有一个限制:(

票数 0
EN

Stack Overflow用户

发布于 2019-07-08 13:19:37

由于您不知道错误消息是否会出现在div标记或span标记中,所以可以尝试以下方法

.//error@innertext~‘error message’

此外,如果对象已被正确识别,直到原始post中的div标记为止,它将工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56239812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档