小工具知识网

当前位置: 首页 > 行业知识 > Airtest-Selenium实操小课③:下载可爱猫猫图片

行业知识

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

2026-11-14 14:22:43 来源:互联网转载

1. 前言

那么这周���们看看如何实现使用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 WebChromeimport requestsfrom 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,'//p[@]//p[@]//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 相关教程
    • 如何使用AirtestIDE生产web自动化脚本

    • 如何使用Airtest-selenium进行web端的页面元素交互

    • 如何设置chromedriver以及一些常见的web脚本问题

    • 为什么AirtestIDE无法检索web控件?

      4.2 参考脚本的有效性

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

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

      作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!

      软件测试面试文档

      我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

      行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

上一篇:外国服务器网站背后的警示标签,违法犯罪的警钟长鸣

下一篇:服务器投入费用怎么算的?