基本上,我试图使用Selenium的Xpath处理以下HTML:
<!DOCTYPE HTML>
<html xmlns="http://www.w3.org/1999/xhtml">
<a>Public Profile</a>
</html>
我正在使用以下选择器:
//a[text() = 'Public Profile']
看起来很简单,但是根据Selenium,它返回0个匹配项。我也在在线xpath测试器中尝试过:
http://codebeautify.org/Xpath-Tester
而且也不会返回任何结果。奇怪的是,当我删除
xmlns =“ http://www.w3.org/1999/xhtml”
-attribute可以毫无问题地找到匹配项。
谁能告诉我为什么xmlns标记使Xpath查询失败?
在旁注中,我的C#selenium-xpath查询看起来如下:
Driver.FindElement(By.XPath("//a[text() = 'Public Profile']"))
编辑:我发现的链接可以很好地说明正在发生的事情:
XML元素具有名称空间,我的XPATH不起作用
就XML / XPath处理而言,该xmlns="http://www.w3.org/1999/xhtml"
部分将html
元素放入XML名称空间。
并且a
元素继承了该命名空间。并且//a[text() = 'Public Profile']
XPath表达式将只匹配的_未命名空间_a
的元素。
//a[namespace-uri()='http://www.w3.org/1999/xhtml'][text() = 'Public Profile']
是使其匹配的一种方法。
//*[name()='a'][text() = 'Public Profile']
是另一种方式。
而这//*[text() = 'PublicProfile']
是另一种方式(假设您已经知道将获得所需的a
元素,而不是其他元素)。
我不知道为什么,但dom4j不加载xmlns属性,如: xmlns=”http://webservices.example.com/servicesplatform/command/1.0.0“xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance" 其他属性通常会加载,但会被忽略。我使用属性迭代器检查所有元素的所有属性。 下面是我如何读取此xml
下面是我的config.yml的一部分: 我有一个用于解析的类: 然而,当我跑的时候 发生以下错误: 为什么它抱怨找不到属性AuthenticationConfig而AuthenticationConfig只是实例变量的名称? 更新在我将实例变量从“private”更改为“public”后,它们被SnakeYaml识别,但这并不是我们所能肯定的。类不被识别为JavaBean。 更新我找到了根本原因
问题内容: By Company 我需要捕获上述元素的xpath。我尝试了以下替代方法,但在Chrome中似乎没有任何效果。您能否建议其他选择。 问题答案: 要查找元素: 您可以使用以下xpath之一: 使用: 使用: 但是,理想情况下,您可能希望避免使用 NO-BREAK SPACE 字符,并使用以下任一解决方案: 使用: 使用: 参考 您可以在以下位置找到相关的详细讨论: 使用XPATH搜
问题内容: Selenium无法通过ID和定位iframe Name。 这是用于Shopify上的自动结帐测试。具体问题在付款字段内。我找到的ID和名称iframe,即。 Code trials: The error is: 问题答案: 我相信可以为此使用XPath。您将需要使用XPath查找IFrame IWebElement,然后将IWebElement传递到SwitchTo()。Frame(
这是我的输入xml
如何在Gradle中包含属性文件? 例如,在Ant中,我可以执行以下操作: