还是XPath中祖先的条件?

问题描述 投票:0回答:2

我正在尝试表达看起来像这样的XPath。

//div[@class='foo']/ancestor::(fieldset or div)[@class='foo1']

但是XPath目前无法使用(fieldset or div)

像下面这样的长XPath正在工作,

(//div[@class='foo']/ancestor::fieldset[@class='foo1'] or //div[@class='foo']/ancestor::div[@class='foo1'])

但是,是否有任何简洁的方法来构建此XPath?

selenium selenium-webdriver xpath xpath-2.0
2个回答
0
投票

您可以使用以下xpath:

//div[@class='foo']/ancestor::[//fieldset or //div][@class='foo1']

0
投票

进行三项调整:

  1. 通过在层次结构中提升谓词来消除ancestor::轴的使用。
  2. or移动到谓词内。
  3. self::轴与*相对应,并分解出常用的@class谓词。

一起:

//*[self::fieldset or self::div][@class='foo1']//div
© www.soinside.com 2019 - 2024. All rights reserved.