一、
1.通过csv文件批量导入数据
1 from selenium import webdriver 2 from time import ctime,sleep 3 import csv 4 #循环读取每一行每一个字段csv 5 bid_info = csv.DictReader(open('E:\script\python-script\demo_test_courses.csv','r')) 6 dict_data = [] 7 for lines in bid_info: 8 if bid_info.line_num == 1: 9 continue 10 else: 11 dict_data.append(lines) 12 row_num = len(dict_data)#计算csv文件行数,从而得出i的循环限制数 13 # print('this is all the data---' + str(dict)) 14 15 i = 0#初始化循环次数值 16 while(i < row_num): 17 #print('this is'+str(i)+'row----'+ str(dict_data[i])) 18 #print(dict_data[i]) 19 print((dict_data[i])['first_name']) 20 print((dict_data[i])['last_name']) 21 #创建课程 22 driver = webdriver.Chrome() 23 driver.get("http://demo.pingnanlearning.com/test/login/index.php") 24 driver.find_element_by_id("username").send_keys("grace") 25 driver.find_element_by_id("password").send_keys("1") 26 driver.find_element_by_id("loginbtn").click() 27 driver.find_element_by_link_text(u"系统管理").click() 28 driver.find_element_by_link_text(u"添加课程").click() 29 driver.find_element_by_id("107").click() 30 driver.find_element_by_class_name("kc_btn_next").click() 31 driver.find_element_by_name("fullname").send_keys((dict_data[i])['first_name']) 32 driver.find_element_by_id("idnumber").send_keys((dict_data[i])['last_name']) 33 sleep(5) 34 driver.find_element_by_xpath("//*[@id="course2"]/div[2]/input[2]").click() 35 sleep(5) 36 driver.find_element_by_xpath("//*[@id="course3"]/div[3]/input[2]").click() 37 sleep(5) 38 #课程开启操作 39 driver.find_element_by_xpath("//*[@id="course4"]/div[2]/input[3]").click() 40 # a=driver.find_element_by_class_name("btn_switch").value 41 # a=1 42 #创建课程后将课程由默认状态“禁用”变更为“启用” 43 driver.find_element_by_css_selector("#tip_s2>label").click() 44 i += 1
对应csv文件所在位置设定如下图:
csv中文件内容如下:
运行成功截图:
2.将上方读取的csv文件内容写入到已经创建好的csv文件中。
1 #读取csv文件再讲读取的数据写入csv文件 2 csvfile2 = open('E:\script\python-script\demo_test_courses-w.csv','w',newline='') 3 writer=csv.writer(csvfile2) 4 i=0 5 writer.writerow(('first_name','last_name')) 6 while(i<row_num): 7 print((dict_data[i])['first_name'],(dict_data[i])['last_name']) 8 writer.writerow(((dict_data[i])['first_name'],(dict_data[i])['last_name'])) 9 i += 1 10 csvfile2.close()
——————————————————————————————————————————
零散思路记录:
with open("E:\script\python-script\demo_test_courses.csv","r") as csvfile:
reader=[each for each in csv.DictReader(csvfile)]
for row in reader:
print(row['first_name'],row['last_name'])
'''
reader = csv.reader(csvfile)
for i,rows in enumerate(csvfile):
if i==3:
row=rows
print(row)
'''
'''
rows=[row for row in reader]
print(rows)
row=csvfile.readline()
for row in reader:
for row in reader:
print(reader.line_num,row[0])
print(len(csvfile))
'''
二、通过txt文件批量导入数据,读取fullname和idnumber
1 txtfile=open("E:\script\python-script\demo_test_a\demo_test_courses.txt","r")#引用的txt文件 2 un = txtfile.readline()#读取一行数据 3 i = 0 4 new = []#将读取的每一行数据以小数组subject为单元存放在一个大数组new中。 5 while(i <2):#此处的2随着txt文件中行数的变化去自定义输入 6 un=un.strip(' ')#去掉读取末尾的回车 7 subject=un.split(',')#以逗号为分隔符读取数据 8 new.append(subject) 9 #print(new[i]) 10 print(subject[0])#fullname读取 11 print(subject[1])#idnumber读取 12 un=txtfile.readline() 13 i+=1 14 txtfile.close()
放到场景中的代码记录:
1 from selenium import webdriver 2 from time import ctime,sleep 3 #import csv 4 import unittest,os,time 5 #通过txt文件参数化课程名和课程编号 6 txtfile = open("E:\script\python-script\demo_test_a\demo_test_courses.txt", "r") # 用户名文件 7 new = [] 8 un = txtfile.readline() # 读取一行数据 9 #un = txtfile.readline() 10 #循环读取每一行 11 i = 0 12 while(i <2): 13 un = un.strip(' ') # 去掉读取末尾的回车 14 subject = un.split(',') # 以逗号为分隔符读取数据 15 new.append(subject) 16 #创建课程 17 driver = webdriver.Chrome() 18 driver.get("http://demo.pingnanlearning.com/test/login/index.php") 19 driver.find_element_by_id("username").send_keys("grace") 20 driver.find_element_by_id("password").send_keys("1") 21 driver.find_element_by_id("loginbtn").click() 22 driver.find_element_by_link_text(u"系统管理").click() 23 driver.find_element_by_link_text(u"添加课程").click() 24 driver.find_element_by_id("107").click() 25 driver.find_element_by_class_name("kc_btn_next").click() 26 driver.find_element_by_name("fullname").send_keys(subject[0]) 27 driver.find_element_by_id("idnumber").send_keys(subject[1]) 28 print(subject[0]) 29 print(subject[1]) 30 sleep(5) 31 driver.find_element_by_xpath("//*[@id="course2"]/div[2]/input[2]").click() 32 sleep(5) 33 driver.find_element_by_xpath("//*[@id="course3"]/div[3]/input[2]").click() 34 sleep(5) 35 driver.find_element_by_xpath("//*[@id="course4"]/div[2]/input[3]").click() 36 # a=driver.find_element_by_class_name("btn_switch").value 37 # a=1 38 #创建课程后将课程由默认状态“禁用”变更为“启用” 39 driver.find_element_by_css_selector("#tip_s2>label").click() 40 un = txtfile.readline()#读取txt文件中的下一行数据 41 i += 1#控制循环次数+1 42 txtfile.close()
文件在电脑上的位置及文件基本内容:
三、通过excel文件批量导入数据,读取fullname和idnumber
举例说明excel读取相关知识点:
1 from selenium import webdriver 2 from time import ctime,sleep 3 import xlrd 4 5 #通过xls文件参数化课程名和课程编号 6 xlsfile=r"E:scriptpython-scriptdemo_test_ademo_test_courses_xls.xls"#打开指定路径中的xls文件 7 book=xlrd.open_workbook(xlsfile)#得到Excel文件的book对象,实例化对象 8 sheet0 = book.sheet_by_index(0) # 通过sheet索引获得sheet对象 9 print("1、",sheet0) 10 sheet_name = book.sheet_names()[0]# 获得指定索引的sheet表名字 11 print ("2、",sheet_name) 12 sheet1 = book.sheet_by_name(sheet_name)# 通过sheet名字来获取,当然如果知道sheet名字就可以直接指定 13 nrows = sheet0.nrows # 获取行总数 14 print ("3、",nrows) 15 #循环打印每一行的内容 16 for i in range(nrows): 17 print( sheet1.row_values(i)) 18 ncols = sheet0.ncols #获取列总数 19 print("4、",ncols) 20 row_data = sheet0.row_values(0) # 获得第1行的数据列表 21 print (row_data) 22 col_data = sheet0.col_values(0) # 获得第1列的数据列表 23 print("5、",col_data) 24 # 通过坐标读取表格中的数据 25 cell_value1 = sheet0.cell_value(0, 0) 26 print("6、",cell_value1) 27 cell_value2 = sheet0.cell_value(0, 1) 28 print ("7、",cell_value2)
对应成功图图和文件夹位置及文件内容:
demo环境通过excel批量创建课程代码及截图展示:
1 from selenium import webdriver 2 from time import ctime,sleep 3 import xlrd 4 5 #通过xls文件参数化课程名和课程编号 6 xlsfile=r"E:scriptpython-scriptdemo_test_ademo_test_courses_xls.xls"#打开指定路径中的xls文件 7 book=xlrd.open_workbook(xlsfile)#得到Excel文件的book对象,实例化对象 8 sheet0 = book.sheet_by_index(0) # 通过sheet索引获得sheet对象 9 print("1、",sheet0) 10 sheet_name = book.sheet_names()[0]#aaaaa 获得指定索引的sheet表名字 11 print ("2、",sheet_name) 12 sheet1 = book.sheet_by_name(sheet_name)# 通过sheet名字来获取,当然如果知道sheet名字就可以直接指定 13 nrows = sheet0.nrows # 获取行总数 14 print ("3、",nrows) 15 #循环打印每一行的内容 16 for i in range(nrows): 17 print( sheet1.row_values(i)) 18 ''' 19 ncols = sheet0.ncols #获取列总数 20 print("4、",ncols) 21 row_data = sheet0.row_values(0) # 获得第1行的数据列表 22 print (row_data) 23 col_data = sheet0.col_values(0) # 获得第1列的数据列表 24 print("5、",col_data) 25 ''' 26 #循环读取每一行 27 i = 1 28 while(i < nrows): 29 30 # 通过坐标读取表格中的数据 31 cell_value1 = sheet0.cell_value(i, 0) 32 #print("first_name:", cell_value1) 33 cell_value2 = sheet0.cell_value(i, 1) 34 #print("last_name:", cell_value2) 35 #创建课程 36 driver = webdriver.Chrome() 37 driver.get("http://demo.pingnanlearning.com/test/login/index.php") 38 driver.find_element_by_id("username").send_keys("grace") 39 driver.find_element_by_id("password").send_keys("1") 40 driver.find_element_by_id("loginbtn").click() 41 driver.find_element_by_link_text(u"系统管理").click() 42 driver.find_element_by_link_text(u"添加课程").click() 43 driver.find_element_by_id("107").click() 44 driver.find_element_by_class_name("kc_btn_next").click() 45 driver.find_element_by_name("fullname").send_keys(cell_value1) 46 driver.find_element_by_id("idnumber").send_keys(cell_value2) 47 sleep(5) 48 driver.find_element_by_xpath("//*[@id="course2"]/div[2]/input[2]").click() 49 sleep(5) 50 driver.find_element_by_xpath("//*[@id="course3"]/div[3]/input[2]").click() 51 sleep(5) 52 driver.find_element_by_xpath("//*[@id="course4"]/div[2]/input[3]").click() 53 # a=driver.find_element_by_class_name("btn_switch").value 54 # a=1 55 #创建课程后将课程由默认状态“禁用”变更为“启用” 56 driver.find_element_by_css_selector("#tip_s2>label").click() 57 i += 1
对应文件位置及内容截图: