如何单击动态元素

时间:2017-07-12 13:57:09

标签: java xpath anchor

我试图找出检索" Projects(x)"的xpath。来自以下html,但没有任何结果:

<li class="">
    <span id="c1025_ctl">
        <a id="c1025">
            <span>Similar people</span>
        </a>
    </span>
</li>
<li class="tabs-selected">
    <span id="c1016_ctl">
        <a id="c1016">
            <span>Projects (x)</span>
        </a>
    </span>
</li>
<li class="">
    <span id="c1037_ctl">
        <a id="c1037">
            <span>Info</span>
        </a>
    </span>
</li>

到目前为止,//a[contains(.,'Projects (x)')]/span//a[contains(.,'Projects (x)')]

已尝试过

2 个答案:

答案 0 :(得分:1)

如果在制作id时知道XPath并且一致,则应首选以下内容:

//a[@id="c1016"]

如果您只能根据文字进行搜索,可以使用:

//a[./span/text()="Projects (x)"]

我在http://www.xpathtester.com/xpath上测试了这些,我在使用封装在根标记中的示例数据后成功检索了目标a标记(为了使其成为有效的XML);但我无法分享结果,因为网站的save函数似乎会在第一次引用后删除XPath字段中的所有内容。

关于您在评论中添加的Java代码,我会尝试调用By.xpath(...).toString()方法,希望它能显示整个构造的XPath。这可能会指出其构造中的错误。请注意,我不了解Selenium,只能希望By.toString方法会以这种方式运行。

如果没有,我会使用我的IDE调试器检查By调用创建的By.xpath(...)项,并查看其中的字段,希望找到一个包含整个构建的XPath。

答案 1 :(得分:0)

你可以试试xpath:

//span[. = 'Projects (x)'][parent::a]/parent::a如果您想获取元素a

如果只需要parent::a

,请在结尾处移除span