当前位置: 首页 > 知识库问答 >
问题:

Selenium WebDriver Xpath当前元素属性报告无效的Xpath异常

秦光启
2023-03-14
<html>
<body>
  <div class='open'>
    <h1>Title</h1>
    <div>Opened</div>
  </div>
</body>
</html>
//h1/../.[contains(@class, 'open')]
driver.FindElement(By.XPath("//h1/../.[contains(@class, 'open')]"));

注意:我的例子当然简化了

共有1个答案

羊昊苍
2023-03-14

我想说,这可能是因为规范没有明确说明是否应该允许在缩写步骤后使用谓词,即...,规范也没有提到在缩写步骤后使用谓词的例子。

所以有些XPath实现不支持它。我注意到其中之一是。NET Framework中的XPath实现。其他实现显式地不允许它,甚至为用户提供了有用的建议,将其XPath中的...替换为等效的未缩写表达式,顺序为self::node()parent::node(),例如XPathTester使用的实现。但正如您所注意到的,其他实现可能支持它。

作为解决方案,有许多替代XPath与您最初尝试的XPath相当或足够接近。最简单的方法是将.扩展为未缩写的表达式,正如我前面提到的那样。就我个人而言,如果可能的话,我更喜欢不要从树中往下走,然后返回父元素。相反,只需停在我们要返回的父元素,并检查谓词中的子元素:

//*[contains(@class, 'open')][h1]
 类似资料:
  • 我有以下XML。 我在http://chris.photobooks.com/xml/default.htm上查看了它,它显示xpath无效,不确定问题出在哪里。

  • 问题内容: 就像标题所说的那样,是否可以在XPath中选择仅以某个字符串开头但不以同一字符串结尾的元素? 例如,有3个锚元素: 我只想获取以’buy.php /’开头的锚元素。我认为以下内容不会起作用: 我怎样才能做到这一点? 问题答案: http://www.zvon.org/xxl/XSLTreference/Output/function_starts- with.html

  • 尝试使用页面中的示例XML文件“示例1/Log4j 2 XML配置”: http://logging.apache.org/log4j/2.x/manual/migration.html 但它给出了: 有什么想法吗? 我在pom.xml中使用这种依赖关系, 我在课堂上使用这个: 我指定配置文件如下:

  • 下面是我的代码。当我从excel中输入url时,大部分时间都显示org . open QA . selenium . elementnotvisibleexception:元素当前不可见错误。对于像www.travelocity.com这样的网站,它显示点击7 8链接后,但www.google.com显示错误从开始。 线程"main"org.openqa.selenium.ElementNotVi

  • 在使用Vdt的过程中,你也许会遇到这样一个问题:设置的属性,并不能渲染出来,例如: <input maxlength="10" /> 上述例子中,设置的maxlength属性丢失了。要理解这个原因,可以看看这段介绍 Content attribute & IDL attribute, 以及Virtual-Dom文档中对VNode的介绍 Content vs IDL attribute Conte

  • SAX异常:s4s-att-invalid-value:元素“element”中“name”的属性值无效。记录原因:cvc-datatype-valid.1.2.1:“ns2:response”不是“ncName”的有效值。

  • 我正在尝试获取此代码的颜色和图像: 除了在以电流结尾的类中,这两个看起来都一样。 我的问题是我不知道如何获得元素的值。 我试过:

  • 嗨,我是一个相当新的硒。可以有人请建议如何定位和元素在iframe asi是得到错误下面。 带有Iframe标记的DOM按钮元素的屏幕截图 以前编写的代码