使用Python和Selenium将鼠标悬停在图形上

2024-10-03 11:24:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用Python和Selenium从http://fuelinsights.gasbuddy.com/Charts中获取数据。困难的部分是数据只在线图上的一个点悬停时出现。目前,我的问题是无法创建所有悬停在对象上的列表。目前我的代码如下:

from selenium import webdriver as web
from selenium.webdriver.common.action_chains import ActionChains

driver = web.Chrome('driver path')

driver.get('http://fuelinsights.gasbuddy.com/Charts')

test= driver.find_elements_by_xpath('//*[@class="highcharts-markers"]')

print(test)

`

这给了我测试=[]。以前,我在所有的刮削项目中都使用了beauthoulsoup,但是我已经重新做了一些以前的项目,以确保我了解Selenium是如何工作的,并且没有出现问题。在

如果有人能帮我解决这个问题,这样我就可以创建一个项目列表,我可以使用ActionChains来悬停并从中提取价格和日期,我将不胜感激。在

谢谢你!在

****编辑**** 为了澄清这一点,我已经看过许多其他关于SVG和g元素以及Highcharts的文章,但是我仍然缺少解决这个问题的方法。我尝试了许多Xpath(以及其他find_elements_by options),但只得到两个结果:(1)Xpath有效,但不包含任何元素;或(2)InvalidSelectorException,表示无法使用Xpath表达式定位元素。我认为这可以归结为简单地错误地指定了Xpath,但是我不知道如何找到正确的Xpath。在


Tags: 项目fromimportcomhttp元素列表driver
1条回答
网友
1楼 · 发布于 2024-10-03 11:24:39

不能使用上面提到的Xpath来定位svg标记中的元素。在

可用于创建悬停对象列表的Xpath是:

“//[name()='svg']/[name()='g'和@class='highcharts-markers']/*[name()='path']”

我编写了一个java程序来获取所有工具提示元素的文本。您可以使用该逻辑并编写相应的python代码:

1。获取工具提示元素列表

 List <WebElement> highChartElements= driver.findElements(By.xpath("//*[name()='svg']//*[name()='g' and @class='highcharts-markers']/*[name()='path']"));

2。遍历列表并使用action类移动并单击所有工具提示元素

3。获取工具提示元素的文本。

^{pr2}$

相关问题 更多 >