自动化测试小技巧之Airtest-Selenium和Excel的无缝协作
一、前言
Airtest
去导出生成一份 Excel
,那么我们今天一起讨论一下,我们应该如何去实现,以及当我们获取的数据类型不同的时候,获取的方式该怎么随之调整?
二、知识点介绍
2.1 python下的Excel的操作
Excel
的读写操作,在这里我们是使用了创建 Excel
,写入并保存Excel的操作。
import xlwings as xw
# 创建一个新的Excel工作簿和工作表
wb = xw.Book()
sheet = wb.sheets[0]
#将内容写入Excel内
sheet.range((row_index, col_index)).value = cell.text
# 保存Excel文件
wb.save('output.xlsx')
wb.close()
2.2 获取table数据
F12
唤出页面开发者模式,可以看到表格在 HTML
中的标签为 <table>
,以及在表格中 <tr>
标签是表格的行, <td>
标签是表格的列,我们只需要找到 <table>
标签,将表格内的行列内容以此读取并导出到Excel中或输出即可。
def get_table_data():
#获取表格
table = driver.find_element(By.XPATH, "//*[@id=\"content\"]/table")
# 获取所有行
rows = table.find_elements(By.TAG_NAME, "tr")
# 行索引
row_index = 1
# 遍历所有行以及每行中的列
for row in rows:
# 获取所有列
cells = row.find_elements(By.TAG_NAME, "td")
# 列索引
col_index = 1
for cell in cells:
# 写入每个格子的内容到Excel表格
sheet.range((row_index, col_index)).value = cell.text
col_index += 1
row_index += 1
2.3 获取普通数据内容
HTML
代码排布,热搜词条是在同一层级下按顺序排布的。
# 循环获取XPath范围内的元素文本内容和链接
row_index = 1
for i in range(2, 11): # 假设你要获取10个元素
xpath = f"//*[@id='sanRoot']/main/div/div/div[2]/a[{i}]/div[2]/div[2]/div/div"
# 查找元素
element = driver.find_element(By.XPATH, xpath)
# 获取元素文本内容
content = element.text
# 获取元素的父链接 (a 标签)
parent_element = driver.find_element(By.XPATH, xpath + "/ancestor::a[1]")
link = parent_element.get_attribute('href')
# 写入Excel表格
sheet.range((row_index, 1)).value = content
sheet.range((row_index, 2)).value = link
row_index += 1
三、使用Airtest-selenium获取网页上的table内容并生成excel
<table>
表格数据到本地Excel表的例子:
# -*- encoding=utf8 -*-
__author__ = "Airtest"
from airtest.core.api import *
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from airtest_selenium.proxy import WebChrome
from selenium.webdriver.common.by import By
import xlwings as xw
driver = WebChrome()
driver.implicitly_wait(20)
auto_setup(__file__)
def get_table_data():
# 获取所有行
rows = table.find_elements(By.TAG_NAME, "tr")
# 行索引
row_index = 1
# 遍历所有行以及每行中的列
for row in rows:
# 获取所有列
cells = row.find_elements(By.TAG_NAME, "td")
# 列索引
col_index = 1
for cell in cells:
# 写入每个格子的内容到Excel表格
sheet.range((row_index, col_index)).value = cell.text
col_index += 1
row_index += 1
if __name__ == "__main__":
# 打开目标网页
driver.get("https://www.runoob.com/python3/python3-os-file-methods.html")
table = driver.find_element(By.XPATH, "//*[@id=\"content\"]/table")
# 创建一个新的Excel工作簿和工作表
wb = xw.Book()
sheet = wb.sheets[0]
get_table_data()
# 保存Excel文件
wb.save('output.xlsx')
wb.close()
四、使用Airtest-selenium获取网页上的热搜榜并导出标题以及链接
Excel
的例子(PS:运营同学甚至可以做成定时脚本,定时收集榜单信息参考,时刻关注热门话题):
# -*- encoding=utf8 -*-
__author__ = "Airtest"
from airtest.core.api import *
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from airtest_selenium.proxy import WebChrome
import xlwings as xw
from selenium.webdriver.common.by import By
driver = WebChrome()
driver.implicitly_wait(20)
auto_setup(__file__)
def get_element_content_and_link(xpath, sheet, row_index):
try:
# 查找元素
element = driver.find_element(By.XPATH, xpath)
# 获取元素文本内容
content = element.text
# 获取元素的父链接 (a 标签)
parent_element = driver.find_element(By.XPATH, xpath + "/ancestor::a[1]")
link = parent_element.get_attribute('href')
# 写入Excel表格
sheet.range((row_index, 1)).value = content
sheet.range((row_index, 2)).value = link
row_index += 1
except Exception as e:
print(f"元素 {xpath} 未找到: {e}")
return row_index
if __name__ == "__main__":
# 创建一个新的Excel工作簿和工作表
wb = xw.Book()
sheet = wb.sheets[0]
# 打开目标网页
driver.get("https://top.baidu.com/board") # 替换为你的目标网页URL
# 行索引
row_index = 1
# 循环获取XPath范围内的元素文本内容和链接
for i in range(2, 11): # 假设你要获取10个元素
xpath = f"//*[@id='sanRoot']/main/div/div/div[2]/a[{i}]/div[2]/div[2]/div/div"
row_index = get_element_content_and_link(xpath, sheet, row_index)
# 保存Excel文件,覆盖已存在的文件
wb.save('output.xlsx')
wb.close()
# 关闭浏览器
driver.quit()
五、小结
Airtest-selenium
获取网页上两种不同数据并导出到Excel表的情况,主要是介绍了关于 Airtest-selenium
与 Excel
的协作,以及在获取不同数据内容的时候,我们应该如何去获取以及思考脚本思路。在实际应用过程,同学们可以根据自己的需求,去编写更加复杂和专业的脚本。
本文分享自微信公众号 - AirtestProject(AirtestProject)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
如何玩转云端文生视频、0码构建AI应用?华为云专家来揭秘
本文分享自华为云社区《HDC 2024丨华为云开发者社区直播精华回顾》,作者:华为云社区精选。 6月21-23日,备受瞩目的华为云开发者大会2024为广大开发者奉上HarmonyOS、盘古大模型、昇腾AI云服务、GaussDB数据库等最新创新成果。华为云开发者联盟同样在线上为大家奉献了四场干货满满的直播嘉年华。华为云技术专家及优秀开发者代表相聚云端,聚焦前沿科技,开展硬核技术探讨,盘点云计算年度热点话题,洞察市场先机,共话交流、共谋合作、共同探索。超多干货,带您一同回顾下直播精华内容。 点击链接回看直播 构筑云原生时代的应用稳定性 华为云aPaaS DTSE技术布道师韫欣为大家带来《构筑云原生时代的应用稳定性》。他讲到,在飞速发展的数字时代,云原生已经成为了许多企业的首选,它不仅提供了灵活性和可扩展性,还为应用程序的稳定性带来了全新的技术革命。并就这一方向与开发者们交流了云原生时代的应用挑战、趋势,跟大家分享了华为云应用平台AppStage的实践经验和优秀案例。 “运维大模型开启了未来运维新时代,知识图谱与数字机器人融合,将推动运维智能化持续发展。”韫欣总结道。 如何玩转云端文生视频?...
-
下一篇
Airtest-Selenium实操小课④:微信读书上阅读书籍
👆对私有云感兴趣可以进入公众号回复“私有云”哦。 1. 前言 上一课我们讲到用Airtest-Selenium爬取下载可爱的猫猫图片,还没看的同学可以戳 这里 看看~ 那么今天的推文,我们就来说说看,怎么实现模拟真人去打开微信读书网站,点击进入书本进行阅读。 2.需求分析和准备 整体的需求大致可以分为以下步骤: 打开chrome浏览器 打开百度网页 搜索“微信读书” 点击进入“微信读书”官网 搜索关键词“长安的荔枝” 点击进入“长安的荔枝”书本 翻阅书籍前五章内容 在写脚本之前,我们需要准备好社区版AirtestIDE(目前最新版为1.2.17), 设置好chrome.exe地址和对应的driver即可。 3. 脚本实现与运行效果 3.1 脚本运行效果 在运行过程中,我们将每次的搜索结果通过读取url链接的方式去实现页面跳转,在进入到书籍阅读界面时,根据读取到的页面高度、文档高度、去计算可滑动高度,实现滑动阅读的操作。并且根据页面的JS距离去判断是否已经滑动到文档底部,从而执行点击下一章的操作。 先来看下我们整体的运行效果: 3.2 完整代码分享 这里也附上完整的示例代码给大家参考,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2配置默认Tomcat设置,开启更多高级功能