标签: xpath

使用Capybara和Xpath时无法悬停并单击按钮

我正在尝试使用Capybara单击一个按钮.我尝试了所有我能想到的组合,但没有运气.试图点击"删除"链接.只有当您将鼠标悬停在表格中的行上时,才会显示删除链接.

这是HTML:

    <tbody>
    <tr class="even" id="informal_6">
     <td class="columnOrganizationNameColumnValue" id="informal_7">

       <div>
         <a id="showLink_0" title="Organization Details" class="viewLink">
           Institution / Automation
         </a>
       </div>

       <div class="gridMenuDescription">
          &nbsp;
       </div>

       <div class="gridMenu">
           <a id="gridMenuDirectLink_1" title="Edit Organization" class="gridMenuItem">
             edit
           </a>

           <a id="gridMenuDirectLink_2" class="gridMenuItem delete">
             delete
           </a>
       </div>
     </td>

      </tbody>
Run Code Online (Sandbox Code Playgroud)

我想注意一下,"gridMenu"div,当你使用Firebug将鼠标悬停在它上面时,它转向:

       <div class="gridMenu hover gridMenuShow">
Run Code Online (Sandbox Code Playgroud)

我试过的一些事情,但没有运气:

    find(:xpath, '//*[(@id = "gridMenuDirectLink_2")]').click

    find("#informal_6").find("#informal_7").find(".gridMenu.hover.gridMenuShow").find(".gridMenuItem.delete").click
Run Code Online (Sandbox Code Playgroud)

建议?

xpath capybara selenium-webdriver

1
推荐指数
1
解决办法
2051
查看次数

如果字符串以数字开头,则包含throws的xpath错误

我遇到了nokogiri和xpath的奇怪问题.我想解析一个HTML文档,并通过href值和它们包含的锚文本获取所有链接.

到目前为止这是我的xpath:

    xpath = "//a[contains(text(), #{link['anchor_text']}) and @href='#{link['target_url']}']"
    a = doc.search(xpath)
Run Code Online (Sandbox Code Playgroud)

只要link ['anchor_text']是没有数字的字符串,这就可以正常工作.

如果我试图获取锚文本"11example"的链接,则会抛出以下错误:

    Invalid expression: //a[contains(text(), 11example) and @href='http://www.example.com/']
Run Code Online (Sandbox Code Playgroud)

也许这只是一个愚蠢的错误,但我不明白为什么会出现这种错误.如果我在xpath中围绕#{link ['anchor_text']}添加一些引号,那么什么都不起作用.

编辑:这是示例HTML:

<!DOCTYPE html>
<head>
  <title>Example.com</title>
</head>
<body>
<p>
<strong>Here is some text</strong><br />
<a href="example.com" target="_blank">11example</a>Some text here and there
</p>
<p>
<strong>Another text</strong><br />
<a href="example.com/test" target="_blank">example.com</a>Some text here and there
</p>
</body>
Run Code Online (Sandbox Code Playgroud)

Edit2:如果我在irb控制台中手动运行这些查询,一切都按预期工作,但前提是我将文本放在引号中.

提前致谢!

亲切的问候,madhippie

ruby xpath ruby-on-rails nokogiri

1
推荐指数
1
解决办法
475
查看次数

添加参数后快速查询失败

我使用Sitecore开发人员中心Sitecore XPath Builder来创建查询.

以下查询在源字段中正常工作:

fast:/sitecore/content/#Product Information#/#Image Galleries#//*

此查询返回图像库下面的所有对象,但这不是我想要的.我想只包含一个名为"图库"的特定模板.我写了这个查询.

fast:/sitecore/content/#Product Information#/#Image Galleries#//*[@@templatename='Image Gallery']

此查询正确返回XPath Builder/Sitecore查询表示法中的信息,但当放在另一个项目的源字段中时,它会失败并返回此错误.

预计在第5位的字符串结束.

谢谢阅读!:)

xpath sitecore sitecore7

1
推荐指数
1
解决办法
119
查看次数

Xpath,Java和变量

这是我目前的代码:

Document document2 = builder.parse(new FileInputStream("C:path to xml file.xml"));
Node theNode2 = (Node) xpath.evaluate("//*[@name='**variable here**']", document2, XPathConstants.NODE);
Run Code Online (Sandbox Code Playgroud)

如果代码在这里说"变量",是否可以使用变量搜索XML文件?到目前为止,我只能在我正在搜索的内容中进行硬编码,即:

("//*[@name='happy']", document2, XPathConstants.NODE);
Run Code Online (Sandbox Code Playgroud)

java xml xpath

1
推荐指数
1
解决办法
682
查看次数

"/"与XPath 1.0中的"/*/parent ::*"相同吗?

我一直在阅读XPath规范并使用XPath Visualizer工具以获得更深入的XPath 1.0知识.

我可以使用选择文档的根节点/.当我在工具中输入此字符时,在其文本编辑器中没有指示可视选择,但状态栏包含以下文本:

"/: 1 node selected",

这是预期的.选择的是不可见的根节点(文档根).

但是当我将/*/parent::*字符序列输入到工具中时,我得到了

"/*/parent::*: Zero nodes selected".

该工具是否正确或该表达式是否还应选择根节点?

我也尝试使用祖先轴而不是父节点,规格说明如下:

祖先轴包含上下文节点的祖先; 上下文节点的祖先由上下文节点的父节点和父节点的父节点组成,依此类推; 因此,除非上下文节点是根节点,否则祖先轴将始终包括根节点

其中特别提到了根节点.因为在我的情况下,第一个位置步骤的上下文节点是文档元素,结果集是否应该包含根节点?为什么不?

规格也说这个:

父轴包含上下文节点的父节点(如果有)

还有这个:

/选择文档根(始终是文档元素的父级)

请注意,我故意在上面的文本中使用与规范中使用的相同的术语.

Edit01

加载到工具中的xml文档是一个格式良好的XML文档,因此非空.

xml xpath

1
推荐指数
1
解决办法
341
查看次数

Java XPath API - 获取表示子树的字符串

我的问题不是关于xpath语法,而是与围绕xpath的java API有关.考虑以下xml:

<wrapper>
    <metadata>
        <somefield>somevalue</somefield>
        <anotherfield>othervalue</anotherfield>
    </metadata>
    <data>
        <some>
            <unique>
                <xml>
                    <structure>stuff</structure>
                </xml>
            </unique>
        </some>
    </data>
</wrapper>
Run Code Online (Sandbox Code Playgroud)

我可以使用以下代码轻松地使用xpath获取元数据字段:

 XPath xp = XPathFactory.newInstance().newXPath();
 Node node = (Node) xp.evaluate("/wrapper/metadata/somefield", xmlDoc, XPathConstants.NODE);
 String somefield = node.getFirstChild().getNodeValue();
Run Code Online (Sandbox Code Playgroud)

我正在努力学习如何从标记开始获取表示xml 子树的字符串<some>.换句话说,我编写什么代码来获取一个字符串,打印出来时会打印出以下内容?xpath查询将是"/ wrapper/data/some",但我不知道如何正确使用xpath api.

<some>
    <unique>
        <xml>
            <structure>stuff</structure>
        </xml>
    </unique>
</some>
Run Code Online (Sandbox Code Playgroud)

java xml xpath subtree

1
推荐指数
1
解决办法
1485
查看次数

找到'@'的预期令牌'eof'

我正在学习xslt和xpath.从节点中选择一个属性我得到了这个错误 预期的标记'eof'找到'@'.

这是我的XML和XSL文件:

XML:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="catalog.xsl"?>
<inventory>
<drink>
    <lemonade supplier="mother" id="1">
        <price>$2.50</price>
        <amount>20</amount>
    </lemonade>
    <pop supplier="store" id="2">
        <price>$1.50</price>
        <amount>10</amount>
    </pop>
</drink>
<snack>
    <chips supplier="store" id="3">
        <price>$4.50</price>
        <amount>60</amount>
        <calories>180</calories>
    </chips>
</snack>
</inventory>
Run Code Online (Sandbox Code Playgroud)

XSL文件:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/" >
<html>
<body>
<xsl:value-of select="inventory/snack/chips@supplier"/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

xml xslt xpath

1
推荐指数
1
解决办法
5340
查看次数

Sublime中的XPath查找程序

我已经阅读了关于Stackoverflow的另一篇文章,讨论了这个主题,但它几乎都是基于Windows的工具.我目前正在运行Mac,并且在所有提到的工具中,http://xpath.alephzarro.comhttp://ditchnet.org/aquapath/在Mac中都可用.

有没有人知道SublimeText2/3是否有一个我不知道找到某个节点的XPath的功能?我问的是Sublime,因为我用它作为我的主要工具.

xpath sublimetext2

1
推荐指数
1
解决办法
6360
查看次数

如何从<span>和</ span>之间的html中检索数据

我想在亚马逊的客户评论中得到1到5的房价.我查看了源代码,发现这部分看起来像

<div style="margin-bottom:0.5em;">
    <span style="margin-right:5px;"><span class="swSprite s_star_5_0 " title="5.0 out of 5 stars" ><span>5.0 out of 5 stars</span></span> </span>
    <span style="vertical-align:middle;"><b>Works great right out of the box with Surface Pro</b>, <nobr>October 5, 2013</nobr></span>
  </div>
Run Code Online (Sandbox Code Playgroud)

我希望从5星中获得5.0分

<span>5.0 out of 5 stars</span></span> </span>
Run Code Online (Sandbox Code Playgroud)

我怎样才能使用xpathSApply来获取它?

谢谢!

html xpath r

1
推荐指数
1
解决办法
1019
查看次数

XSLT中的双斜线

我有一个样式表,它包含两个文件,一个来自工程库,另一个来自文档库,然后将它们合并以创建一些DITA文件(进一步处理)。最近,我试图将文档文件的内容分为通用文件和特定文件。因此,我的合并现在是一个包含两个文档文件的工程文件。

通用文件是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<messages xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <message id="IDENT_STRING">
    ....
  </message>
</messages>
Run Code Online (Sandbox Code Playgroud)

特定文件具有指向通用文件的ENTITY标签:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE messages [
<!ENTITY generic-file SYSTEM "generic-file.xml">
]>
<messages> &generic-file; <!-- specific-file -->
  <message id="IDENT_STRING2">
    ....
  </message>
</messages>
Run Code Online (Sandbox Code Playgroud)

选择是这样写的:

<xsl:copy-of select="$docid/message[@id=$id]/doc/explanation/text()"/>
Run Code Online (Sandbox Code Playgroud)

这只会从特定文件中获取内容。直到我将select更改为两个斜杠后,我的样式表才能正常工作。这是正确的版本:

<xsl:copy-of select="$docid//message[@id=$id]/doc/explanation/text()"/>
Run Code Online (Sandbox Code Playgroud)

我对社区的问题是1)为什么第二种语法正确?和2)我将如何更快地找到它?

xml xslt xpath

1
推荐指数
1
解决办法
3766
查看次数