Poco和Excel读写结合的应用实践案例

简介: Poco和Excel读写结合的应用实践案例

网络异常,图片无法展示
|


1. 案例简介



之前我们在 数据分离实践 一文中,详细讲述了Poco和读Excel结合的应用案例。


今天我们来聊一个Poco和Excel读写结合的应用案例。首先,我们提前准备了一个包含多位歌手名称的Excel表格,命名为 read.xls


网络异常,图片无法展示
|


我们将在这个表格中读取歌手名称,然后依次到网易云音乐首页去进行搜索,并且找到歌手的单曲;


之后,我们会拿到歌手单曲排前10位的歌曲名称,并且把这个歌曲名称保存到另外一个Excel表格 write.xls 里。


这个案例可以帮助你 自动获取指定歌手的前10首歌曲名称 ,看起来似乎很快乐,那就让我们开始吧!


2. 实现找歌手单曲名称的函数



我们先来实现这个找歌手单曲名称的流程(假设网易云音乐的初始状态是首页):


  • 点击首页的搜索框
  • 输入歌手的名称,比如 张艺兴
  • 显示搜索结果之后,点击“单曲”这个tab
  • 然后再“单曲”下面获取前10首歌曲的名称
  • 回到网易云音乐的首页(等待搜索下一个歌手)


# -*- encoding=utf8 -*-
__author__ = "AirtestProject"
from airtest.core.api import *
auto_setup(__file__)
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
# 点击首页的搜索框
poco("com.netease.cloudmusic:id/searchBar").click()
sleep(1.0)
# 输入歌手名称
text("张艺兴")
sleep(3.0)
# 单击“单曲”的tab
poco(name="android.widget.TextView",text="单曲").click()
sleep(1.0)
# 拿到前10首歌曲的名称
count = 0
for li in poco("com.netease.cloudmusic:id/recyclerView").child("com.netease.cloudmusic:id/musicListItemContainer"):
    count += 1
    if count <= 10:
        title = li.offspring("com.netease.cloudmusic:id/songName")
        song_name = title.get_text()
        print(song_name)
# 回到网易云音乐首页
keyevent("BACK")
keyevent("BACK")
sleep(1.0)
复制代码


网络异常,图片无法展示
|


流程没问题之后,我们可以把这个找歌曲名称的脚本封装成函数,因为等会要搜索好几个歌手的名字,需要重复用到这部分的内容:


def find_song(name):
    song_list = []
    poco("com.netease.cloudmusic:id/searchBar").click()
    sleep(1.0)
    text(name)
    sleep(3.0)
    poco(name="android.widget.TextView",text="单曲").click()
    sleep(1.0)
    count = 0
    for li in poco("com.netease.cloudmusic:id/recyclerView").child("com.netease.cloudmusic:id/musicListItemContainer"):
        count += 1
        if count <= 10:
            title = li.offspring("com.netease.cloudmusic:id/songName")
            song_name = title.get_text()
            song_list.append(song_name)
#             print(song_name)
    keyevent("BACK")
    keyevent("BACK")
    sleep(1.0)
    return song_list
复制代码


3. 实现在Excel中读取歌手名称的函数



那接下来,就是要从Excel的单元格中,读取到我们要找的几位歌手名称,这里我们用来读Excel的库依旧是之前我们讲过的 xlrd


import xlrd
def get_excel():
    ex = xlrd.open_workbook(r'D:\demo\read.xls')
    sheet = ex.sheet_by_name('music')
    dat = []  
    for row in range(sheet.nrows):  
        cells = sheet.row_values(row)  
        # 拿每一行第2个单元格的内容(即歌手名称)
        data=cells[1]
        dat.append(data) 
    # 将拿到的歌手名称保存到列表中,该函数返回歌手名称的列表
    return dat
复制代码


注意 xlrd 为Python的第三方库,我们要在 import 之前把它装到当前使用的Python环境中:


pip install xlrd
复制代码


4. 把拿到的单曲名称保存到指定Excel中



能拿到Excel里面的歌手名称列表,又可以根据歌手名称获取前10首的歌曲名称,那我们只要 遍历从Excel读出来的歌手名称列表 ,传给找歌曲的函数,即可获得所有歌手的10首歌曲名称:


li = []    
for d in get_excel():
    li.append(find_song(d))
复制代码


最后,我们就可以把所有歌手的歌曲名称写到指定的表格里了。这里我们用到另外一个Python的第三方库 xlwings


import xlwings as xw
app = xw.App(visible=True, add_book=True)
wb = xw.Book(r'D:\demo\read.xls')
sheet = wb.sheets('music')
sheet.range('C1:C4').value=li
wb.save(r'D:\demo\write.xls')
wb.close()
app.quit()
复制代码


网络异常,图片无法展示
|


别忘记在 import 之前,先在当前Python环境中安装好这个库:


pip install xlwings
复制代码


5. 小结



关于Airtest或者Poco项目与Excel读写结合的实践,其实还有很多,比如我们可以将测试的账号集保存在特定的Excel表格里,然后 测试的时候去读取账号集表格里面的账号密码 来使用;


又或者是我们测试过程中,将拿到的一些关键数据,保存到指定Excel文件中待用等等。

在这里我们仅以在Excel中读取歌手名称,然后在网易云音乐中找到歌手单曲的前十首歌曲名称,保存到指定Excel的例子,来给同学们提供1个简单的思路。


在实际应用过程,同学们可以根据自己的需求,编写更加复杂和专业的脚本。

相关文章
|
7月前
|
人工智能 数据可视化 机器人
【办公自动化】Excel透视表的简单应用
【办公自动化】Excel透视表的简单应用
|
1月前
|
Java BI API
Java Excel报表生成:JXLS库的高效应用
在Java应用开发中,经常需要将数据导出到Excel文件中,以便于数据的分析和共享。JXLS库是一个强大的工具,它基于Apache POI,提供了一种简单而高效的方式来生成Excel报表。本文将详细介绍JXLS库的使用方法和技巧,帮助你快速掌握Java中的Excel导出功能。
69 6
|
2月前
|
Python
python读写操作excel日志
主要是读写操作,创建表格
66 2
|
2月前
|
索引 Python
Excel学习笔记(一):python读写excel,并完成计算平均成绩、成绩等级划分、每个同学分数大于70的次数、找最优成绩
这篇文章是关于如何使用Python读取Excel文件中的学生成绩数据,并进行计算平均成绩、成绩等级划分、统计分数大于70的次数以及找出最优成绩等操作的教程。
92 0
|
3月前
|
数据挖掘 数据处理 Python
python如何高效处理excel图表案例分享
python如何高效处理excel图表案例分享
50 2
对excel读写的三个模块,xlsxwriter最牛,xlwt , xlrd,openpyxl
对excel读写的三个模块,xlsxwriter最牛,xlwt , xlrd,openpyxl
|
7月前
|
Python
python_读写excel、csv记录
python_读写excel、csv记录
61 0
|
4月前
|
SQL JSON 关系型数据库
n种方式教你用python读写excel等数据文件
n种方式教你用python读写excel等数据文件
|
4月前
|
easyexcel Java 关系型数据库
阿里巴巴-EasyExcel 基于Java的简单、省内存的读写Excel
该文章主要介绍了在Java应用中如何使用EasyExcel技术完成对Excel文件的导入和导出操作,包括环境搭建、基本概念、快速入门、进阶操作和综合应用等内容,并提供了相关代码示例和注意事项。
 阿里巴巴-EasyExcel 基于Java的简单、省内存的读写Excel
|
5月前
|
存储 对象存储 Python
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。