【问题标题】:xpath locator works in FF3, but won't work in IE7xpath 定位器在 FF3 中有效,但在 IE7 中无效
【发布时间】:2009-10-14 16:33:33
【问题描述】:

从 firefox 测试切换到 Internet explorer 测试后,selenium 无法再找到某些元素。

我找到了一个定位器:

xpath=(//a[@class='someclass'])[2]

虽然它在 Firefox 下可以正常工作,但它在 ie 中找不到这个元素。 我现在有什么选择? JS DOM? CSS 选择器?这个定位器会是什么样子?

更新:

我将提供一个例子来说明我的观点:

<ul>
  <li>
    <a class='someClass' href="http://www.google.com">BARF</a>
  </li>
  <li>
    <a class='someClass' href="http://www.google.de">BARF2</a>
  </li>
</ul>
<div>
  <a class='someClass' href="http://www.google.ch">BARF3</a>
</div>

以下 xpath 不起作用:

//a[@class='someclass'][2]

据我了解,这应该与以下内容相同:

//a[@class='someclass' and position()=2]

而且我没有任何链接是任何节点的第二个子节点。我想要的是,从类'someClass'的一组链接中解决一个链接。

【问题讨论】:

    标签: xpath selenium


    【解决方案1】:

    如果不了解您的 HTML 源代码的其余部分,就很难为您提供可以保证工作的替代方案。希望以下建议能帮助您指明正确的方向:

    • //a[@class='someClass'][2]
      这与您的示例类似,但不需要括号。

    • //a[contains(@class, 'someClass')][2]
      即使链接有其他类也可以。

    • css=a.someClass:nth-child(2)
      只有在链接是其父元素的第二个子元素时才有效。

    更新

    • 根据您的更新,尝试以下操作:
      //body/descendant::a[@class='someClass'][2]

    【讨论】:

    • 我同意你推荐的解决方案,但你只是错过了一个@,因为类是一个属性
    • 没错,我没有提供上下文,但让我用这个 xpath 解释我的意图:这些括号定义了页面上具有指定类的所有链接的集合。从这个集合中我想访问第二个元素。这些链接不是同级链接,它们可能分散在页面中。除了 xpath 之外,我不知道任何其他的 selenium 定位方法可以实现这种定位。问题仍然存在,为什么这在 IE 上不起作用,但在 FF 中起作用。谢谢
    • 你在IE中尝试过推荐的解决方案吗?它应该可以正常工作。
    • @Rubens 谢谢!那里很严重的错字! :)
    • 感谢您的努力,但这对我的情况没有帮助。我在上面的描述中添加了一个示例代码 sn-p 以使其更加清晰。
    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 2018-09-05
    • 2022-10-01
    相关资源
    最近更新 更多