【问题标题】:Python Selenium, the text of the next elementPython Selenium,下一个元素的文本
【发布时间】:2017-09-22 02:42:19
【问题描述】:

我可以得到第一个元素的文本。但我不知道如何遍历整个列表并获取每个元素的文本。这是网站上的树:

Screenshot

所以我得到了第一个元素的文本:

driver.find_element_by_xpath("//a[@my-peer-link='participant.user_id']").click()
print(driver.find_element_by_xpath("//span[@ng-bind=\"'@' + user.username\"]").text)

在每个

div class="md_modal_list_peer_wrap clearfix" ng-repeat="participant in chatFull.participants.participants"

包含

div class="md_modal_list_peer_name"

其中包含

a class="md_modal_list_peer_name" my-peer-link="participant.user_id">Олег

你需要按。即执行:

driver.find_element_by_xpath("//a[@my-peer-link='participant.user_id']").click()

之后,会打开一个新窗口,从中获取元素的文本:

driver.find_element_by_xpath("//span[@ng-bind=\"'@' + user.username\"]").text

但是有几个这样的元素,我需要和大家一起获取文本:

div class="md_modal_list_peer_wrap clearfix" ng-repeat="participant in chatFull.participants.participants"

怎么做?

【问题讨论】:

    标签: python-3.x selenium


    【解决方案1】:

    弗拉基米尔,我没有仔细分析过这个问题;然而,就这么简单吗?

    而不是使用

    driver.find_element_by_xpath("//span[@ng-bind=\"'@' + user.username\"]").text
    

    你能用吗:

    for span in driver.find_elements_by_xpath("//span[@ng-bind=\"'@' + user.username\"]"):
        span.text
    

    (注意 `find_elements_by_xpath' 中的复数形式。)

    【讨论】:

      【解决方案2】:

      您需要单击每个元素并将文本存储在列表中:

      所以先用

      elements_to_click = driver.find_elements_by_xpath("//a[@my-peer-link='participant.user_id']"
      

      这将返回一个元素列表

      通过

      循环遍历这些元素
      • 点击元素
      • 切换到新窗口(新建WindowHandle时,否则跳过此步骤。)
      • 通过
        driver.find_element_by_xpath("//span[@ng-bind=\"'@' + user.username\"]").text获取文本
      • 将其存储在列表中
      • 关闭窗口(新建WindowHandle时,否则跳过此步骤。)
      • 切换到上一个窗口

      【讨论】:

        猜你喜欢
        • 2019-03-10
        • 1970-01-01
        • 2021-01-28
        • 2022-06-11
        • 2014-07-16
        • 2023-01-25
        • 2023-03-09
        • 2023-03-16
        • 1970-01-01
        相关资源
        最近更新 更多