【问题标题】:Python: Selenium Driver find_elements_by_xpath: IssuePython:Selenium 驱动程序 find_elements_by_xpath:问题
【发布时间】:2020-08-24 12:14:23
【问题描述】:

我想通过使用 selenium 驱动程序包从各种网页中提取元素。我使用 find_elements_by_xpath 通过文本识别目标元素。虽然我认为我能够解决“空格”、“breaks”等问题,但我的代码找不到以下元素 ,很遗憾。

这是我试图通过其文本找到的 元素

x = """<p align="left"><font face="Arial" color="#439539" size="5">Compensation
Discussion<br>&amp; Analysis</font></p>"""

这是各个webpage原始代码截图

这是我目前用来识别包含文本“薪酬讨论与分析”的元素的代码

searchterm = "Compensation Discussion & Analysis

driver.find_elements_by_xpath("//*[contains(normalize-space(translate(., '\u00A0', ' ')), '" + searchterm + "')]")

我知道可能有一些方法可以只包含我的部分搜索词,例如 starts-with() 等。但是,我更愿意继续查找整个搜索词,而不是将其拆分为多个组件。

非常感谢任何帮助!提前非常感谢!

【问题讨论】:

    标签: python html selenium xpath


    【解决方案1】:

    您所拥有的看起来不错,我希望 normalize-space() 能够工作 - 但是,显然中间的 &lt;br&gt; 很有趣。

    我可以告诉你的是,br 导致文本被分成 2 个节点。你实际上有text()text()[2]

    我只在 chrome 中尝试过,我还没有在 selenium 中尝试过,但是试试这个 xpath:

    //font[contains(normalize-space(concat(text(), ' ', text()[2])),'Compensation Discussion & Analysis')]
    

    (请注意,我将此匹配到 font,但您可以根据需要进行更新)

    这通过全文匹配您的麻烦对象和其他对象 - 我认为这就是您所追求的。

    这是我的开发工具的外观:

    您还可以向 concat 添加其他项目,即使它们不存在,并且仍然保留匹配项:

    //font[contains(normalize-space(concat(text(), ' ', text()[2], ' ', text[3])),'Compensation Discussion & Analysis')]
    

    这可能意味着一个标识符可以匹配所有这些..


    最后的评论 - 你可以在中间看到我用空格连接两个节点concat(text(), ' ', text()[2]) - 这是因为节点的文本是Compensation Discussion↵&amp; Analysis - “讨论”和“&”之间没有空格 -添加此空间可提高与文档其余部分的一致性。


    [更新]

    经过以上所有(有效!)我再次想到了“最终评论”......

    我又看了一遍,normalize-space 确实有效 - 您的文本只是在 & 号之前没有空格...

    【讨论】:

      【解决方案2】:

      如果您要在页面上查找整个搜索词,请尝试以下操作:

      string=driver.find_element_by_xpath("//div[19]/table[1]/tbody[1]/tr[20]/td[1]/font[1]")
      print(string.text)
      OR
      print(string.get_attribute("innerHTML")
      

      这应该可以完成工作!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-02
        • 2012-03-10
        • 1970-01-01
        • 1970-01-01
        • 2017-09-11
        • 2019-11-23
        • 2021-03-31
        • 2021-05-14
        相关资源
        最近更新 更多