b.函数嵌套()
# 进入嵌套 self.driver.switch_to.frame('iframe-superadmin') #退出嵌套 self.driver.switch_to.default_content()
c.flash,验证码(关闭验证码或使用万能码)
d.xpath问题:最好采用最简xpath,当xpath中出现li[10]等时需注意,有时页面定位会出现问题
4、采用CSV存数据
CSV:以纯文本形式存储表格数据(数字和文本),CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。大量程序都支持某种CSV变体,至少是作为一种可选择的输入/输出格式。
melody101,melody101,m,1,3,123456,@qq.com melody102,melody101,f,2,5,123456,@qq.com melody103,melody101,m,3,2,123456,@qq.com
import csv # 读取CSV文件到user_list字典类型变量中 user_list = csv.reader(open("list_to_user.csv", "r")) # 遍历整个user_list for user in user_list: sleep(2) self.logn_in('admin', 'admin') sleep(2) # 读取一行csv,并分别赋值到user_to_add 中 user_to_add = {'account': user[0], 'realname': user[1], 'gender': user[2], 'dept': user[3], 'role': user[4], 'password': user[5], 'email': user[0] + user[6]} self.add_user(user_to_add)
5、对下拉列表的定位采用select标签
from selenium.webdriver.support.select import Select # 选择部门 dp =self.driver.find_element_by_id('dept') Select(dp).select_by_index(user['dept']) # 选择角色 Select(self.driver.find_element_by_id('role')).select_by_index(user['role'])
6、模块化代码
需要对自动化重复编写的脚本进行重构(refactor),将重复的脚本抽取出来,放到指定的代码文件中python网页自动化脚本,作为共用的功能模块。使用模块化代码注意需倒入该代码。
#模块化代码后引用,需导入代码模块 from ranzhi_lib import RanzhiLib self.lib = RanzhiLib(self.driver) # 点击后台管理 self.lib.click_admin_app() sleep(2) # 点击添加用户 self.lib.click_add_user() # 添加用户 self.lib.add_user(user_to_add) sleep(1) # 退出 self.lib.logn_out() sleep(2)