• 【Python】通过python代码实现demo_test环境的登录,通过csv/txt/excel文件批量添加课程并开启课程操作--(刚开始 项目 页面 模块 元素这种鸟 被称作pageobject 等这些搞完 然后把你的定位器、数据 和脚本在分离 就是传说中那个叫数据驱动 的鸟)


    一、
    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

    对应文件位置及内容截图:

  • 相关阅读:
    Hadoop_33_Hadoop HA的搭建
    Hadoop_32_HDFS高可用机制
    Hadoop_31_MapReduce参数优化
    Hadoop_30_MapReduce_多job串联
    Hadoop_29_MapReduce_计数器应用
    Hadoop_28_MapReduce_自定义 inputFormat
    Hadoop_27_MapReduce_运营商原始日志增强(自定义OutputFormat)
    Hadoop_26_MapReduce_Reduce端使用GroupingComparator求同一订单中最大金额的订单
    Hadoop_25_MapReduce实现日志清洗程序
    干货 | 剑指offer系列文章汇总
  • 原文地址:https://www.cnblogs.com/zhuzhubaoya/p/8670211.html
Copyright © 2020-2023  润新知