bsb036 2022-01-11 10:11 采纳率: 43.8%
浏览 263
已结题

再次提问:在python中使用selenium对地图网页移动和缩放

问题遇到的现象和发生背景

https://smart.zj121.com/radarNew/index.html该网页打开后是以杭州为中心,想以其他城市为中心,底图并放大。

问题相关代码,请勿粘贴截图
from selenium import webdriver
from selenium.webdriver import ActionChains
import time
 
chrome_driver = 'd:/test/chromedriver.exe'
driver = webdriver.Chrome(executable_path=chrome_driver)
driver.maximize_window()
driver.get('https://smart.zj121.com/radarNew/index.html')
source = driver.find_element_by_id("radarLeft")
ActionChains(driver).move_by_offset(xoffset=200, yoffset=200).perform()
time.sleep(2)
driver.get_screenshot_as_file("d:/test/radar.png")
driver.quit()

运行结果及报错内容

运行没有报错,但是也没有达到想要的效果,本想使用drag_and_drop_by_offset(source, xoffset, yoffset)但是不知道source该选取哪个元素,click_and_hold(on_element=None)和move_by_offset(xoffset, yoffset)也是同理,而且不知道如何缩放。

  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2022-01-11 10:42
    关注

    这个地图的实例是全局变量,可以调用execute_script来调用实例api实现放大缩小和重新定位(需要知道经纬度,经纬度题主可以先打开浏览器拖动到需要的中心点,然后f12打开控制台,然后输入map.getCenter()得到中心点的经纬度,放大倍数输入map.getZoom()获取,如下图)

    img

    其他功能题主可以研究下地图的api,API和高德地图基本一致,应该是居于高德的2次开发

    下面为示例

    driver.execute_script("map.setZoom(13)")#放大到13倍,如下图

    img

    driver.execute_script("map.setView({lat:40.02130468739707,lng:116.73797607421876},7)")#定位到北京的经纬度,7倍大小

    img

    主要用到
    map.setZoom(放大倍数【3~18左右的数字】)

    map.setView({lat:纬度【浮点数】,lng:经度【浮点数】},放大倍数【3~18左右的数字】)

    这2个API,实际用就用map.setView就可以

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月19日
  • 已采纳回答 1月11日
  • 创建了问题 1月11日

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配