当我将鼠标悬停在元素上时,如何抓取出现的文本?

How do I scrape the text that appears when I hover over the element?

所以在电子商务网页 (https://www.jooraccess.com/r/products?token=feba69103f6c9789270a1412954cf250) 上,当我将鼠标悬停在它上面时会显示产品的颜色名称,我能够确定 HTML 代码中的新行是什么当我悬停时出现,但我不知道如何抓取文本('NAVY')。

<div class="ui top left popup transition visible Tooltip_Tooltip__M0LJL Tooltip_black__heZoQ" style="position: absolute; inset: auto auto -7494px 378px;">NAVY</div>
driver.get("https://www.jooraccess.com/r/products?token=feba69103f6c9789270a1412954cf250")  
elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='Swatch_swatch__2X1CY']")))   
for el in elements:       
    ActionChains(driver).move_to_element(el).perform()   
    mouseover = WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='ui top left popup transition visible Tooltip_Tooltip__M0LJL Tooltip_black__heZoQ'")))      
    print(mouseover)

我已经检查了你的 code.Your xpath 表达式对于工具提示元素来说似乎是错误的。 我已经改变了它并且还获得了你需要的文本值 print(element.text)

driver.get("https://www.jooraccess.com/r/products?token=feba69103f6c9789270a1412954cf250")  
elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='Swatch_swatch__2X1CY']")))   
for el in elements:       
    ActionChains(driver).move_to_element(el).perform()   
    mouseover = WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='ui top left popup transition visible Tooltip_Tooltip__M0LJL Tooltip_black__heZoQ']")))      
    print(mouseover.text)

在我的终端上输出。

出于某种原因,我无法让您的网站与我正在使用的平台一起使用,但我设法创建了一个示例。我建议使用 Actions 库并使用它移动到有问题的元素。

ActionChains(self.driver).move_to_element(self.driver.find_element(By.XPATH, "//a[@class='dropdown-toggle']")).perform()

这适用于我正在使用的网站,但如果您更改自己元素的 xpath,它应该可以工作。驱动程序完成此操作后,您可以通过悬停找到您想要显示的元素。您应该可以将其放入 for 循环中,一切顺利。

我做了一个可运行的例子here

这是我在看到这里的答案之前得出的解决方案:

 elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='Swatch_swatch__2X1CY']")))
    for el in elements:
        ActionChains(driver).move_to_element(el).perform()
        page = BeautifulSoup(driver.page_source, features='html.parser')
        print(page.find("div", class_="ui top left popup transition visible Tooltip_Tooltip__M0LJL Tooltip_black__heZoQ").text)