书籍设计网站推荐,互联网的发展趋势,angularjs网站开发实例,松北区建设局网站1. 前言
那么这周我们看看如何实现使用Airtest-Selenium实现自动搜索下载可爱的猫猫图片吧~
2. 需求分析和准备
整体的需求大致可以分为以下步骤#xff1a; 打开chrome浏览器 打开百度网页 搜索“可爱猫猫图片” 定位图片元素 创建存储图片的文件夹 下载可爱猫猫图片…1. 前言
那么这周我们看看如何实现使用Airtest-Selenium实现自动搜索下载可爱的猫猫图片吧~
2. 需求分析和准备
整体的需求大致可以分为以下步骤 打开chrome浏览器 打开百度网页 搜索“可爱猫猫图片” 定位图片元素 创建存储图片的文件夹 下载可爱猫猫图片到文件夹内
在写脚本之前我们需要准备好社区版AirtestIDE设置好chrome.exe和对应的driver并且确保我们的chrome浏览器版本不是太高以及selenium是4.0以下即可这些兼容问题我们都会在后续的版本修复。
3. 脚本实现与运行效果
3.1 脚本运行效果
我们在编写脚本时我们要先明确好代码思路首先下载图片先要找到对应的图片在下载前需要先确认图片存储的地方确认好后就可以进行下载啦。在本次代码编写的时候我们使用了requests.get的方式去下载图片目前使用request库里的操作去获取网络上的资源会更方便快捷让我们看看脚本实现的效果吧~ 3.2 完整代码分享
这里也附上完整的示例代码给大家参考有需要的同学可以自取学习哦
# -*- encodingutf8 -*-from airtest.core.api import *
# 引入selenium的webdriver模块
from airtest_selenium.proxy import WebChrome
import requests
from selenium.webdriver.common.by import Bydef download_image(url, save_path): #下载图片response requests.get(url, streamTrue)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[idcontent_left]//div[classimage-content_1csSY]//a/img)# 创建存储图片的文件夹save_folder image_folderif 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 1download_image(image_url, f{save_folder}/image_{index}.jpg)if __name__ __main__:start_selenium()3.2 重要知识点
1获取下载文件
requests.get()会将请求的响应内容全部下载到内存中然后再返回给调用者。其中stream默认情况下是streamFalse但是如果文件过大就会导致内存不足的情况所以这里使用流式传输的方式去进行下载。 response requests.get(url, streamTrue)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自动化的熟练程度更高。也非常欢迎热心同学给我们投稿~