安装 python 这里安装 3.6 版 注意勾选添加环境变量
安装 selenium pip install selenium-3.12.0-py2.py3-none-any
准备浏览器驱动器 IEDriverServer、chromedriver(google)、geckodriver(Firefox) webdriver.Ie()、.Chrome()、.Firefox() 均无需安装,复制到\Python36-32 中即可 HTMLTestRunner.py 无需安装或配置 用于生成测试结果报告 可以自己修改
导入包
from selenium import webdriver from selenium.webdriver.support.select import Select 用以支持下拉列表对象 from time import sleep
打开和关闭浏览器
driver=webdriver.Ie() webdriver.Chrome() webdriver.Firefox() driver.close()
关闭浏览器 driver.quit() 关闭浏览器以及浏览器驱动程序
打开Url
driver.get(“url 地址”)
等待时间
sleep(3) wait 3s driver.implicitly_wait(3) 隐性等待时间为 3 秒
切换框架/窗口
使用 switch_to 包
定位到当前聚焦的元素上 driver.switch_to.active_element() 切换到 alert 弹窗 driver.switch_to.alert() 切换到主页面 driver.switch_to.default_content() 切换到某个 frame driver.switch_to.frame(编号或 name) 切换到指定的 window_name 页签 driver.switch_to.window(window_name) 切换到上一层的 frame driver.switch_to.parent_frame()
定位页面元素
driver.find_element_by_ name(“login”) id xpath tag_name link_text partial_link_text class_name driver.find_elements_by_ name(“控件 name 名”)[下标] Select(driver.find_elements_by_?) 用于识别下拉列表元素 需要导入包 from selenium.webdriver.support.select import Select
页面元素的属性和方法
driver.title() 获得网页标题 对象.text 获得页面元素的文本值 属于属性 对象.get_attribute(“属性名”) 获得指定属性的值 Select(对象).select_by_value 需要导入包 from selenium.webdriver.support.select import Select select_by_index select_by_visible_text deselect_all() 取消所有选项 deselect_by_index() 取消对应 index 选项 deselect_by_value() 取消对应 value 选项 deselect_by_visible_text() 取消对应文本选项 first_selected_option() 返回第一个选项 all_selected_options() 返回所有的选项 页面元素.send_keys(“数据”) 用于键盘输入数据 页面元素.click() 支持单选按钮、复选框、命令按钮
检查点
1.1 in 运算符
str1 in str2 用于判断 str1 是否存在于 str2 中
1.2 if 语句
if (条件表达式): 语句 else: 语句 括号可以省略 语句必须缩进 英文冒号不能省略
参数化
for 循环
for i in range(初值,终值+1): 语句 冒号不能省略 range 表示范围 语句必须缩进
读 txt 文件
file=open(文件名,‘r’) 返回文件对象,文本默认编码方式是 UTF-8。 'r’表示只是读,默认项。 读取时默认会将平台有关的行结束符(Windows 中是\r\n)转换为\n。 文件名外使用 r 可以禁止\转义。 遍历文件 for 变量 in file 输出变量即可读出整个文件。 按行读出。 list=file.readlines( ) 把文件中的所有行读到一个列表中,换行符可读出。 len(list) 返回列表中的元素个数 关闭文件 file.close( ) 释放文件占用的系统资源。
读 excel 文件
安装 pandas pip install --no-index --find-links=包位置 -r requirements.txt requirements.txt 中记录着所有需要的依赖包和版本号 验证是否成功 python→import pandas 导入包 import pandas 获得数据 data=pandas.read_excel(“xls 文件名”,sheet_name=sheet 表编号或名称,names=[新列名列表],dtype={“新列名”:类型},,skiprows=跳过数据行的行数,header=None 表示没有列名) 默认认为包含列名 获得全部数据,结果为 DataFrame(字典,列名为关键字) datalist=data.values.tolist() 返回列表
访问数据库
安装 pymysql 用于支持 python 连接 mysql。 pip install pymysql…tar.gz
连接数据库 conn=pymysql.connect(host=‘服务器 IP’, port=3306, user=‘用户名’, passwd=‘密码’, db=‘数据库名’, charset=‘utf8’) port=3306,不能加引号,charset='utf8’可省略,此时使用默认端口和字符集。 用游标读取数据 cur=conn.cursor( ) sql=select 语句 cur.execute(sql) data=cur.fetchall( ) 获得数据(元组) cur.close( ) conn.close( ) 关闭游标和数据库
用游标插入数据 conn=pymysql.connect(…) cur=conn.cursor( ) sql=‘insert into 表名 values(%d, “%s”)’ % (变量或常量 1,变量或常量 2) %s 必须加引号,%d 可加可不加。 (变量或常量 1,变量或常量 2)是元组。 cur.execute(sql) conn.commit( ) 用于提交数据,不可省略。 cur.close( ) conn.close( ) 批量提交数据
将很多数据写入数据库时,使用循环每次写入数据会导致服务器压力很大,可 以一次性提交批量数据。
列表.append((变量 1, 变量 2, …, 变量 n)) 必须加括号,元组存入列表。 sql=‘insert into 表名 values(%s, %s, %s, …%s)’ 一律使用%s,%s 与变量个数对应,不能加引号。 cur.executemany(sql, 列表) conn.commit( ) cur.close( ) conn.close( )
