【问题标题】:How to loop over to get content of mouse hover elements using Python/selenium?如何使用 Python/selenium 循环获取鼠标悬停元素的内容?
【发布时间】:2020-11-17 00:23:38
【问题描述】:

我有一个网站,我正在使用 Selenium 从鼠标悬停框中提取信息,显示每个评论的相关信息。我能够让第一个正确,无论我如何尝试,我都无法在页面上循环以从所有人那里获取信息。任何人都可以知道我做错了什么。这是我的代码。

from lxml import html
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome(executable_path="YOUR PATH")
driver.implicitly_wait(15)

driver.get("https://www.depositaccounts.com/banks/reviews/chase-manhattan-bank.html")

#find all
data= driver.find_element_by_xpath("//div[contains(@class, 'bankReviewContainer')]/div[1]/div[3]/div[1]")

for i in data:
        ActionChains(driver).move_to_element(i).perform()
        time.sleep(2)
        #print content of each box
        hover_data=driver.find_element_by_xpath("//*[@class='popover fade right in']").get_attribute("innerHTML")
        print ( hover_data)

driver.quit()```

【问题讨论】:

  • 您的data 不是一个列表,而是一个单独的webElement。滴滴你的意思是data = driver.find_elements_by_xpath(...)
  • 是的,很抱歉给您带来了困惑。它应该是 data = driver.find_elements_by_xpath(...)。
  • P.S.此外,最好将您的data 定义为driver.find_elements_by_class_name('stars1')
  • 将“元素”更改为“元素”后,它可以正常工作,直到第三个鼠标悬停框。显然,第 4 条评论中没有框,循环停止并给出错误。似乎我现在必须找到一种方法来处理丢失的鼠标悬停框。坦率地说,我不知道使用 find_elements_by_xpath 和 find_element_by_xpath 有什么区别。谢谢你的建议。

标签: python html selenium selenium-webdriver xpath


【解决方案1】:

您需要使用find_elements_by_xpath 而不是find_element

试试这个代码:

#find all
data= driver.find_elements_by_xpath("//div[contains(@class, 'bankReviewContainer')]/div[1]/div[3]/div[1]")

for i in data:
        ActionChains(driver).move_to_element(i).perform()
        time.sleep(2)
        #print content of each box
        hover_data=driver.find_element_by_xpath("//*[@class='popover fade right in']").get_attribute("innerHTML")
        print(hover_data)

【讨论】:

    猜你喜欢
    • 2011-11-08
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 2022-11-01
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多