selenim自动化数据驱动测试实例读取csv文件实现批量登录账号,在上一篇中我们已经讲解了如何通过读取txt文件里的数据,实现我们批量登录的脚本,那么这一次我们再使用另外一个数据源.csv文件用做一下批量登录的用例跑一下。
因为这个比txt处理数据的时候会比较方便,为什么这么说呢,假如,我们现在要读取的是一组用户数据(包括用户名,密码,邮箱,年龄,性别)信息,那么使用aplit()方法去拆分数据是很麻烦的事情,因为aplit()方法一次只能将字符串拆分成左右两部分。
下面给大家演示一下,如何通过读取csv文件的方法来解决每次读取多个信息的问题。
首先创建一个usre.csv文件,通过WPS表格或者Excel创建表格,个人推荐使用WPS,好用还免费,输入截图里的数据,点击另存为文件名为user,文件类型选择CSV格式,点击保存按钮。
csv文件数据
下面python脚本分享一下,先创建一个.py文件,然后写入以下脚本。
import csv
file_163="E:\\yuangbao\\bao1\\user.csv"
filename=open(file_163)
reader=csv.reader(filename)
for row in reader:
print("账号:%s"%row[0],"密码:%s"%row[1],"年龄:%s"%row[2],"性别:%s"%row[3])
使用pycharm执行脚本效果图如下:
python文件执行效果图
解释一下脚本,首先导入csv模块,通过reader()方法读取csv文件。然后通过for循环读取文件中的每一行数据。
从打印的结果可以看出csv文件是以数组的形式存在的。那么我们想取用户的某一列信息的时候,只需要指定下标就可以获取到了,从上面的例子看,我取的信息是账号,密码,年龄,性别,那么我就分别用数组的方式 来表示row[0],row[1],row[2],row[3]获取就可以了。数组的下标是以0开始的。
下面再用一个邮箱登录的案例给大家演示一下,如何结合csv做批量登录并退出操作。
python脚本如下,创建一个.py文件,并创建一个类TestDemo,一个函数login_163(),并编写里面元素定位操作
from selenium import webdriver
import csv
from time import sleep
class TestDemo():
def login_163(self):
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("网易邮箱地址")
file_163 = "E:\\yuangbao\\bao1\\user.csv"
filename = open(file_163)
reader = csv.reader(filename)
for row in reader:
driver.switch_to.frame("x-URS-iframe")
driver.find_element_by_name("email").s_keys(row[0]) driver.find_element_by_name("password").s_keys(row[1])
driver.find_element_by_id("dologin").click()
sleep(5)
driver.find_element_by_link_text("退出").click()
sleep(3)
driver.find_element_by_id("js-relogin").click()
driver.quit()
if __name__=="__main__":
TestDemo().login_163()
解释一下脚本,先创建类,然后创建一个函数,打开浏览器为谷歌浏览器,最大化窗口,使用get()方法打开邮箱网页,定义一个变量存放csv数据,循环读取数据,切入iframe表单定位到页面用户,密码文本框,导入csv文件里的账号,密码数据,并点击登录,登录系统界面后,点击退出,跳转到成功退出提示页面,点击重新登录按钮,再次执行登录过程,直至读取完所有数据,退出并关闭浏览。