【问题标题】:Need to print out all links on a sidebar in selenium (xpath?)需要打印出 selenium 侧边栏上的所有链接(xpath?)
【发布时间】:2013-08-24 17:54:57
【问题描述】:

我需要找到任何额外的链接并将它们打印出来。我开始做:

get_xpath_count('//li/a')

并将其与保存侧边栏所有链接名称的数组的大小进行比较。当计数太高/太低时,我需要打印出所有额外/缺失的链接。我想列出名称,以便将其与数组进行比较。我尝试了一些类似get_text('//li/a') 的方法,它返回第一个名称。 get_text('//li/a[1]) 做同样的事情,但任何其他索引都不会返回任何内容。

有什么想法吗?另外,我需要链接上显示的名称,而不是实际的 href。

编辑* 另外,我对 selenium 和 Xpath 还是很陌生。请让我知道是否需要我提供的信息,或者对我的处理方式有任何建议。

【问题讨论】:

    标签: perl xpath selenium


    【解决方案1】:

    我已经能够使用CSS element locators 让它工作。由于我使用 CSS 选择器的频率远高于 Xpath,因此我发现始终将它们与 Selenium 一起使用更容易。

    $selenium->get_text("css=li a:nth-child(1)")
    $selenium->get_text("css=li a:nth-child(2)")
    $selenium->get_text("css=li a:nth-child(...)")
    $selenium->get_text("css=li a:nth-child(n)")
    

    【讨论】:

    • 这似乎并不完全正确。它正在返回用于折叠的链接旁边的 [-] 图标。
    • 如果没有看到你正在使用的实际 HTML,我很难给你一个完整的例子。您应该能够根据需要修改 CSS 选择器。
    • 我不想在这件事上纠缠你,但我试过了,但没有成功。我不断得到对我来说没有意义的结果。这是html的一部分:
    【解决方案2】:

    使用

    (//li/a)[$someNumber]
    

    这将为您提供 XML 文档中 $someNumber-th //li/a 的文本。

    为了知道用什么值替换$someNumber,您需要知道这些元素的总数

    count(//li/a)
    

    【讨论】:

      【解决方案3】:

      这是在 JAVA 中。您可以在 perl 中使用相同的概念

      int totCountInPage=selenium.getXpathCount(//li/a);
      for(int count=1;count<=totCountInPage;count++)
      System.out.println(selenium.getText("xpath=//li[count]/a"));
      

      这应该在所有 li 标签下的锚链接内打印文本。

      【讨论】:

        猜你喜欢
        • 2021-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多