博客
关于我
Python + selenium 如何截图?
阅读量:799 次
发布时间:2023-03-05

本文共 3534 字,大约阅读时间需要 11 分钟。

Selenium 截取网页元素的多种方法

在软件测试和自动化测试领域,截取网页截图是一个常用的操作。以下是几种常见的截图方法,帮助你快速掌握取控。

一、直接截取网页全屏

在 Selenium 中截取网页全屏,可以使用内置的 save_screenshot 方法。以下是示例代码:

from selenium import webdriverfrom time import sleepclass test:    def test_case():        driver = webdriver.Chrome()        driver.maximize_window()        driver.get('https://www.baidu.com/')        sleep(2)        driver.save_screenshot("demo1.png")

运行代码后,demo1.png 文件中会保存当前网页的全屏截图。

二、截取页面上固定元素的图片

如果你需要截取特定元素的图片,可以使用 find_element_by_id 等定位方法,结合 screenshot 方法。以百度首页的“百度一下”按钮为例:

from selenium import webdriverfrom time import sleepclass test:    def test_case():        driver = webdriver.Chrome()        driver.maximize_window()        driver.get('https://www.baidu.com/')        sleep(2)        element = driver.find_element_by_id("su")        element.screenshot("element.png")        driver.quit()

运行后,element.png 中会显示“百度一下”按钮的截图。

三、截取指定位置的图片

有时候你需要截取特定位置的内容,可以通过获取元素坐标来实现。以下是截取百度搜索框的示例:

from selenium import webdriverfrom time import sleepfrom PIL import Imageclass test:    def test_case():        driver = webdriver.Chrome()        driver.maximize_window()        driver.get('https://www.baidu.com/')        sleep(2)        element = driver.find_element_by_id("kw")        print("获取元素的坐标")        location = element.location        print(location)        print(element.size)                top = element.location['y']        bottom = element.location['y'] + element.size['height']        left = element.location['x']        right = element.location['x'] + element.size['width']        print(top, bottom, left, right)                im = Image.open('baidu1.png')        im = im.crop((left, top, right, bottom))        im.show()        im.save("baidu2.png")        driver.quit()

运行后,baidu2.png 中会显示截取的搜索框及其周围内容。

四、图片拼接

如果需要将多张图片拼接成一张大图,可以使用 Python 的 PIL 库。以下是基于 Selenium 截取的图片拼接方法:

from selenium import webdriverfrom PIL import Imageclass test:    def test_case():        driver = webdriver.Chrome()        driver.maximize_window()        driver.get('https://www.csdn.net/')                def join_images(png1, png2, size=0, output='result.png'):            """图片拼接            :param png1: 图片1            :param png2: 图片2            :param size: 两个图片重叠的距离            :param output: 输出的图片文件            :return:            """            img1 = Image.open(png1)            img2 = Image.open(png2)            size1 = img1.size            size2 = img2.size                        joint = Image.new('RGB', (size1[0], size1[1] + size2[1] - size))            loc1 = (0, 0)            loc2 = (0, size1[1] - size)            joint.paste(img1, loc1)            joint.paste(img2, loc2)            joint.save(output)                    # 截取当前页面        driver.save_screenshot('result.png')                # 拼接多张图(示例)        body_h = int(driver.find_element_by_xpath('//body').size.get('height'))        current_h = Image.open('result.png').size[1]        image_list = ['result.png']                for i in range(1, int(body_h / current_h)):            driver.execute_script(f"window.scroll({top: {current_h * i}}, left: 0, behavior: 'auto'});")            driver.save_screenshot(f'test_{i}.png')            join_images('result.png', f'test_{i}.png')                # 处理最后一张图        driver.execute_script("window.scroll({top: {body_h}, left: 0, behavior: 'auto'});")        driver.save_screenshot('test_end.png')        join_images('result.png', 'test_end.png', size=current_h - int(body_h % current_h))                driver.quit()

运行代码后,result.png 中会显示拼接后的完整图像。

通过以上方法,你可以根据需求灵活截取网页内容,满足不同测试场景的需求。

转载地址:http://diafk.baihongyu.com/

你可能感兴趣的文章
Py-Bitcoin 项目使用教程
查看>>
Pytorch 图像增强 实现翻转裁剪色调等 附代码(全)
查看>>
pyautogui模拟鼠标拖动选中文字的基本知识(附Demo)
查看>>
pyautogui的基本介绍和使用
查看>>
PyCharm - 社区版是否能够突出显示 css/javascript?
查看>>
PyCharm 2018.3.5 RC 发布,原生 SSH 支持
查看>>
PyCharm 3.1 在索引期间永远挂起并且无法使用
查看>>
Pycharm Pro 2018.2 汉化专业激活破解
查看>>
PyCharm vs VSCode,是时候改变你的 IDE 了!
查看>>
PyCharm 中,“新建”(New)和“新建项目”(New Project)-ChatGPT4o作答
查看>>
PyCharm 代码编辑与调试运行详解
查看>>
Pycharm 出现 instantitaing tests 以及test session starts 的解决方法
查看>>
pytorch 固定随机种子
查看>>
Pycharm 对容器中的 Python 程序断点远程调试
查看>>
Pycharm 常用快捷键大全【快查字典版】
查看>>
Pycharm 常用快捷键大全,全网最全!
查看>>
PyCharm 常用的技巧完全指南
查看>>
PyCharm 快捷键与效率编码详解
查看>>
pycharm 怎么添加python依赖的包, requirements.txt文件如何导入python库
查看>>
PyCharm 插件工具使用
查看>>