【问题标题】:Selenium: selecting element based on sibling element textSelenium:根据兄弟元素文本选择元素
【发布时间】:2016-08-26 05:03:05
【问题描述】:

我一直在编写 selenium 脚本,用于: http://live.guru99.com/index.php/mobile.html?dir=asc&order=position

并且想要为"Sony Xperia" 选择元素"Add to Compare",但它没有定位。 我尝试了cssSelectorxpath 两者,但无法弄清楚我做错了什么。

CSS 选择器:

div.category-products > ul > li:nth-child(n):contains('Sony Xperia') > div > div.actions > ul > li:nth-child(2) > a

XPath:

//h2/a[@title='Sony Xperia']/ul/li/a[text()='Add to Compare']

注意:cssSelector 位于 Chrome 中,但在 Firefox 中没有给出任何结果

【问题讨论】:

    标签: jquery css selenium testing xpath


    【解决方案1】:

    在第二行你丢失的部分

    //h2[a[@title='Sony Xperia']]
     /following-sibling::div[@class='actions']
     /ul/li/a[text()='Add to Compare']
    

    【讨论】:

    • 在你的回答中://h2[a[@title='Sony Xperia']] 你在'a'之前使用了方括号,所以为什么它不应该是'/',因为'a'不是h2的属性。纠正我,因为我的理解是 [] 用于元素的属性。
    • 用方括号找到h2,它的标签a有条件。通过冲突它找到标签a,然后从中找到
    • 感谢它的工作。但也可以在 cssSelector 上更正它,因为它在 chrome 中工作,但在 Firefox 中它没有定位
    • 我没有浏览器,除了 Chrome,所以我无法测试它
    【解决方案2】:

    这将是适用于任何地方的 xpath。

    xpath://h2/a[@title='Sony Xperia']/../following-sibling::div[3]/ul/li[2]/a

    请参阅以下步骤以详细了解它。

    第 1 步:导航到元素的修复节点://h2/a[@title='Sony Xperia'](您已经这样做了)

    第 2 步:通过添加 /.. 导航到它的父级

    第 3 步:导航到它的兄弟“Actions”/following-sibling::div[3],因为“Action”类位于当前位置的第三个位置

    第 4 步:进入操作节点并到达“ul”/ul

    第 5 步:现在 'Add to compare' 存在于第二个 'li' 中,所以添加 /li[2]

    第 6 步:由于“添加到比较”是一个链接,它将位于“a”内,因此添加 /a

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多