weixin_43041352 2022-04-26 10:31 采纳率: 66.7%
浏览 263
已结题

selenium PhantomJS 截图后的图片分辨率尺寸如何设置

项目现在需要python做在线截屏,登陆页面截图是正常尺寸1500-2000(有时候尺寸会不一样,不只为何产生),但是登陆进去后尺寸宽度瞬间变到10015。拉宽了5倍,请问下我可以固定这个尺寸吗。
目前采用了两个方法没有生效,
第一个:driver设置了尺寸,1920x1080,但是两个页面似乎都不生效,无论怎么改都不行,宽度小于500后,还会让click方法报错。
第二个:用了PIL.Image去调整尺寸和分辨率,但是它也只是缩放了图片,分辨率还是以前的。

img


左边是登陆页面,右边是登陆后的

代码如下

# 调用环境变量指定的PhantomJS浏览器,创建浏览器对象
    driver = webdriver.PhantomJS(executable_path="./phantomjs-2.1.1-macosx/bin/phantomjs",
                                 service_args=['--ignore-ssl-errors=true', '--ssl-protocol=any',
                                               '--web-security=false'])
    now = time.time()
    currentTime = now
    # 设置屏幕大小,防止click找不到id
    driver.set_window_size(1920, 1080)
    driver.maximize_window()
    # driver.set_window_size(500, 1080)
    # 设置超时时间,防止已经加载完毕依然在等待(get与click操作等待时长超过1分钟)
    driver.set_page_load_timeout(2)

    # 开始访问页面
    try:
        driver.get(target["url"])
    except TimeoutException:
        driver.execute_script("window.stop")
    now = time.time()
    print("耗时:" + str(now - currentTime))
    currentTime = now
    time.sleep(2)

    # 登陆页面截图
    driver.save_screenshot("./pic/waf/waf_login_empty.png")

    # 输入用户名密码
    driver.find_element_by_id(target["usernameId"]).send_keys(target["username"])
    # time.sleep(4)
    driver.find_element_by_id(target["passwordId"]).send_keys(target["password"])
    driver.save_screenshot("./pic/waf/waf_login.png")

    # 点击登录
    ele = driver.find_element_by_id(target["loginId"])
    now = time.time()
    print("获取login耗时:" + str(now - currentTime))
    currentTime = now

    try:
        ele.click()
    except TimeoutException:
        driver.execute_script("window.stop")

    now = time.time()
    print("click耗时:" + str(now - currentTime))
    currentTime = now
    # driver.find_element_by_xpath("//input[@id='loginButton' and @class='submit'] ").click()
    # driver.find_element_by_xpath('//*[@id="' + target["loginId"] + '"]').click()

    time.sleep(2)

    # 获取新的页面快照
    try:
        driver.get(target["url"])
    except TimeoutException:
        driver.execute_script("window.stop")

    driver.save_screenshot("./pic/waf/index.png")
    # 设置图片尺寸
    indexImage = Image.open("./pic/waf/index.png")
    (x, y) = indexImage.size
    x_s = 2304
    y_s = int(y * x_s / x)
    indexImage.resize((x_s, y_s), Image.ANTIALIAS).save("./pic/waf/index1.png", dpi=(x_s, y_s))
    now = time.time()
    print("图片设置大小耗时:" + str(now - currentTime))

    # 截图相关图片
    dataInfo = target["dataInfo"]
    equ = target["equ"]
    # driver.set_window_size(600, 1080)
    for di in dataInfo:
        for d in di:
            try:
                driver.find_element_by_id(d).click()
            except TimeoutException:
                driver.execute_script("window.stop")
            time.sleep(2)
        driver.save_screenshot(equ.value["picPath"] + "/wafversion.png")

    # 打印网页渲染后的源代码
    # print(driver.page_source)
    # 获取当前页面的cookie
    print("cookie:")
    print(driver.get_cookies())

    return True;
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 5月4日
    • 创建了问题 4月26日

    悬赏问题

    • ¥15 QWebEngineView
    • ¥20 微信小程序播放直播流
    • ¥15 关于迷宫自走单片机循迹小车的知识
    • ¥15 python使用selenium工具爬取网站的问题
    • ¥15 visual studio中c语言用ODBC链接SQL SERVER
    • ¥15 关于#python#的问题:如何通过pywinauto获取到图中“窗格”内部的内容
    • ¥15 visionMaster4.3.0 与QT 的二次开发异常
    • ¥50 关于#pcb工艺#的问题:这个设计电路中,最终组合起来起到了什么作用
    • ¥15 鼎捷t100或鼎捷E10生产模块与odoo17详细区别和鼎捷t100或鼎捷E10物料清单(BOM)可以在子级的子级在同一界面操作吗
    • ¥50 VS2019,xamarin框架串口调试报错Java.Lang.SecurityException: Exception of type