首页 > 其他分享 >Airtest-Selenium实操小课③:下载可爱猫猫图片

Airtest-Selenium实操小课③:下载可爱猫猫图片

时间:2024-01-25 14:26:52浏览次数:35  
标签:get selenium image Selenium 小课 实操 save 下载 图片

此文章来源于项目官方公众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

1. 前言

上次实操小课分享,我们分享了如何使用Airtest-selenium实现自动化刷B站,还没看的同学可以戳这里回顾一下~

那么这周我们看看如何实现使用Airtest-Selenium实现自动搜索下载可爱的猫猫图片吧~

2. 需求分析和准备

整体的需求大致可以分为以下步骤:

  • 打开chrome浏览器

  • 打开百度网页

  • 搜索“可爱猫猫图片”

  • 定位图片元素

  • 创建存储图片的文件夹

  • 下载可爱猫猫图片到文件夹内

在写脚本之前,我们需要准备好社区版AirtestIDE,设置好chrome.exe和对应的driver;并且确保我们的chrome浏览器版本不是太高以及selenium是4.0以下即可(这些兼容问题我们都会在后续的版本修复)。

3. 脚本实现与运行效果

3.1 脚本运行效果

我们在编写脚本时,我们要先明确好代码思路,首先下载图片先要找到对应的图片,在下载前需要先确认图片存储的地方,确认好后就可以进行下载啦。在本次代码编写的时候,我们使用了requests.get的方式去下载图片,目前使用request库里的操作去获取网络上的资源,会更方便快捷,让我们看看脚本实现的效果吧~

3.2 完整代码分享

这里也附上完整的示例代码给大家参考,有需要的同学可以自取学习哦:

# -*- encoding=utf8 -*-

from airtest.core.api import *
# 引入selenium的webdriver模块
from airtest_selenium.proxy import WebChrome
import requests
from selenium.webdriver.common.by import By



def download_image(url, save_path):                    #下载图片
    response = requests.get(url, stream=True)
    
    if response.status_code == 200:                    #网页可以正常访问
        with open(save_path, 'wb') as file:
            for chunk in response.iter_content(1024):  
                file.write(chunk)
        print("图片下载完成!")
    else:
        print("下载失败。")


def start_selenium():
    # 创建一个实例,代码运行到这里,会打开一个chrome浏览器
    driver = WebChrome()
    driver.implicitly_wait(20)
    
    driver.get("https://www.baidu.com/")
    # 输入搜索关键词并提交搜索
    search_box = driver.find_element_by_name('wd')
    search_box.send_keys('可爱猫猫图片')
    search_box.submit()

    # 定位搜索结果中的图片元素
    image_elements = driver.find_elements(By.XPATH,'//div[@id="content_left"]//div[@class="image-content_1csSY"]//a/img')

    # 创建存储图片的文件夹
    save_folder = 'image_folder'
    if not os.path.exists(save_folder):
        os.makedirs(save_folder)
    index = 0
    
    # 循环保存图片
    for i in image_elements:
        image_url = i.get_attribute('src')  #获取图片列表的网址信息
        print(image_url)

        # 下载图片
        index = index + 1
        download_image(image_url, f'{save_folder}/image_{index}.jpg')


if __name__ == "__main__":
    start_selenium()

3.2 重要知识点

1)获取下载文件

requests.get()会将请求的响应内容全部下载到内存中,然后再返回给调用者。其中stream默认情况下是stream=False,但是如果文件过大就会导致内存不足的情况,所以这里使用流式传输的方式去进行下载。

 response = requests.get(url, stream=True)
2)一块一块的遍历要下载的内容

get函数的stream参数设置成True时,它不会立即开始下载,使用iter_content遍历内容或访问内容属性时才开始下载。

iter_content:分块去遍历要下载的内容,括号内的数字代表chunk_size处理数据时的块大小,单位是B(字节)

使用该函数下载大文件可以防止占用过多的内存,每次只下载小部分数据。

with open(save_path, 'wb') as file:
            for chunk in response.iter_content(1024):  
                file.write(chunk)
3)创建存储图片的文件夹

先判断文件夹是否存在,若不存在则在路径(默认为脚本文件目录下)下创建一个文件夹

 if not os.path.exists(save_folder):
        os.makedirs(save_folder)
4)获取图片的网址信息

element.get_attribute(name):获得element的属性值。name可以是页面元素所含的属性名。

例如:

src:图片

textContent:标签之间的文本内容

innerHTML:标签之间的完整HTML内容

等等.....

image_url = i.get_attribute('src') #获取图片列表的网址信息

4. 注意事项与小结

4.1 相关教程

4.2 参考脚本的有效性

请各位同学们不要过多依赖于我们给出的参考脚本,通常情况下,网页的控件信息可能会随着前端的改动而更新,所以我们的教程并不是永久有效的。

更多的是参考整体脚本的知识点,查漏补缺,让自己在小实践中对web自动化的熟练程度更高。也非常欢迎热心同学给我们投稿~


AirtestIDE下载:airtest.netease.com/
Airtest 教程官网:airtest.doc.io.netease.com/
搭建企业私有云服务:airlab.163.com/b2b

官方答疑 Q 群:117973773

标签:get,selenium,image,Selenium,小课,实操,save,下载,图片
From: https://www.cnblogs.com/AirtestProject/p/17987019

相关文章

  • chrom本地调试 selenium调试本地浏览器
    chrom本地调试 selenium调试本地浏览器1、cmd命令窗口执行下面命令,生成指定端口的chrom窗口。终端执行chrome.exe完整路径--remote-debugging-port=9222--user-data-dir="自定义用户信息文件夹路径",端口可修改。D:\Desktop\item\chromtest\Chrome\Application>chrome.ex......
  • Python:Selenium爬虫
    常用语法驱动常用方法driver.maximize_window()#最大化浏览器driver.set_window_size(w,h)#设置浏览器大小单位像素driver.set_window_position(x,y)#设置浏览器位置driver.back()#后退操作driver.forward()......
  • Selenium爬取文章实例
    这一篇主要是解决一个问题:浏览器操作下拉才能显示更多的内容fromseleniumimportwebdriverfromselenium.webdriver.chrome.serviceimportServicefromselenium.webdriver.common.byimportByimporttimethepaper_dict={}web=webdriver.Chrome(service=Service('......
  • Vue项目迁移小程序,实操干货分享
     今天就给大家分享“Vue项目转小程序”的实操干货。首先明确需求:开发者是想将已有的Vue项目转为小程序,在集成了 FinClip SDK的App中运行小程序,那这里我们就需要关注以下两个注意事项:Web项目是适合在手机等移动设备中运行的,屏幕已经兼容;H5项目的代码是前后端分离......
  • selenium 等待
    1、强制等待(sleep)1fromtimeimportsleep2sleep(5)#强制等待5秒缺点:由于Web加载的速度取决于测试的硬件、网速、服务器的响应时间等因素。如果等待时间太长,容易造成时间浪费;如果等待时间太短,又可能会造成在web还没有加载完所需要定位的element,而出现报错。由于等待时......
  • 云小课|HSS对近期Cactus勒索病毒的分析
    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说)、深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云。更多精彩内容请单击此处。摘要:HSS针对Cactus勒索病毒的解析与防护建议。本文分享自华为云开发者社区《【云小课】|安全第......
  • python测试系列教程——python+Selenium+chrome自动化测试框架
    python测试系列教程——python+Selenium+chrome自动化测试框架需要的环境浏览器(Firefox/Chrome/IE…)PythonSeleniumSeleniumIDE(如果用Firefox)FireBug、FirePath(如果用Firefox)chromedriver、IEDriverServer、phantomjs.exeIDE(Pycharm/Sublime/Eclipse…)1、浏览器建议......
  • selenium自动化测试实战
    selenium自动化测试实战   一、Selenium介绍Selenium是什么?一句话,自动化测试工具。它支持各种浏览器,包括Chrome,Safari,Firefox等主流界面式浏览器,如果你在这些浏览器里面安装一个Selenium的插件,那么便可以方便地实现Web界面的测试。Selenium2,又名WebDriver,它的......
  • 自动化测试——selenium(完结篇)
    自动化测试——selenium(完结篇) 一、元素操作方法方法:1、.send_keys()#输入方法2、.click()#点击方法3、.clear()#清空方法 1234注意:在输入方法之前一定要清空操作!!#导包fromtimeimportsleepfromseleniumimportwebdriver#实例化浏览器......
  • Selenium Grid4.0 - 多台计算机上并行运行
    前言当你希望在多台计算机上并行运行测试?SeleniumGrid可以帮你实现。官方文档原文:https://www.selenium.dev/documentation/grid/getting_started/SeleniumGrid允许通过将客户端发送的命令路由到远程浏览器实例,在远程机器上执行WebDriver脚本。Grid可以做那些事?1.提供一种在多......