目的:当程序运行出错时,通过截图文件能够更直观的知道具
体是哪个操作步骤出错,窗口截图就是指把出错的图片保存到指定位置。
载图方法: driver.get_screenshot_as_file(filename)
截图的文件名必须是以PNG结尾
filename中的文件目录必须手动创建
代码:
#导包
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
#网站实例化
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get("网站路径")
try:
#输入用户名
driver.find_element(By.ID,"userA").send_keys("admin")
#输入密码
driver.find_element(By.ID,"padd").send_keys("123456")
except Exception as e:
driver.get_screenshot_as_file("img/error.png")
raise e
time.sleep(3)
driver.quit()
2.验证码处理
2.1 什么是验证码?
验证码就是指一种随机生成的信息(数字、字母、汉字、图片、算术题)等为了防止恶意的请求行为,增加应用的安全性。自动化过程中也是需要进行注册或者登陆的操作,所以需要处理验证码。
2.2 验证码处理方式
1.去掉验证码 由开发操作 , 用在测试环境
2.设置万能验证码由开发操作, 一般也只使用在测试环境.
3.验证码识别技术由于技术难高,识别率很难达到100%,一般不建议使用
4.记录cookie:通过记录cookie来跳过登陆的操作。
2.3 cookie原理
原理:
cookie是由Web服务器生成的,并且保存在用户浏览器上的小文本文件,它可以包含用户相关的信息。
cookie数据格式:键值对组成(python中的字典)
cookie产生:客户端请求服务器,如果服务器需要记录该用户状态,就向客户端浏览器颁发一个cookie数据
cookie使用:当浏览器再次请求该网站时,浏览器把请求的数据和cookie数据一同提交给服务器,服务器检查该cookie,以此来辨认用户状态。
2.4 selenium操作cookie
driver.get_cookie(name) 获取指名称的cookie信息 返回的是一个字典
driver.get_cookies() 获取的是所有cookie的信息, 返回的是一个列表
driver.add_cookie(dict_cookie) 往浏览器驱动增加cookie,dict_cookie是一字典
注意事项:如何确认哪个cookie是用来控制用户权限的:
1.可以问开发同学
2.针对登陆的前后的cookie进行对比,比登陆之前多cookie都可以用来使用控制用户权限。
3.手动登陆之后不能退出,退出之后就相当于cookie无效了。
- 通过python代码编写一个生成手机号码的函数 (会生成比较多的垃圾数据)
- 在注册之前,备份一处数据库(备份只需要做一次),执行注册的用例,每次执行完用例之后,再去恢复数据库(如果数据库数据量大,那么恢复的时间会比较久,效率比较低)
- 通过python脚本直接在数据库删除新注的用户(要熟悉底层的数据库业务,要知道注册用户是存在哪些表中)
代码:
import random
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
# 定义获取手机号码的函数名
def get_mobile():
mobiles = ['130', '131', '134', '135']
# 确定手机号码所需要格式
number = str(int(time.time()))[2:]
# 通过时间戳获取手机号码的后8位数(一定不会重复)
mobile = random.choice(mobiles)+number
# 把手号码格式的三位数与后8位数相加
return mobile
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get("网站路径")
driver.find_element(By.ID,"username").send_keys(get_mobile())
driver.find_element(By.NAME,"verify_code").send_keys("8888")
driver.find_element(By.ID,"password").send_keys("123456")
driver.find_element(By.ID,"password2").send_keys("123456")
driver.find_element(By.CSS_SELECtOR,".J_btn_agree").click()
time.sleep(10)
driver.quit()
如何使用文件上传功能
1.安装autoit V3 这个工具。autoit V3工具是用来查看windows窗口信息及控件信息的.
2.安装pyautoit模块。
- 解压pyautoit-master.zip文件
- 在windows窗口进入到解压目录之后,再在地址栏输入cmd
- 执行以下python setup.py install
事例代码:
import time
import autoit
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get("http://www.baidu.com")
# 点击百度上面的照相机按钮
driver.find_element(By.CSS_SELECTOR, ".soutu_btn").click()
# 点击选择文件
ele = driver.find_element(By.CSS_SELECTOR, ".upload_pic")
# 定义鼠标对象
action = ActionChains(driver)
# 调用鼠标事件
action.click(ele)
# 执行鼠标事件方法
action.perform()
time.sleep(2)
# 针对windows操作
# 通过autoit来获取弹出的窗口
autoit.win_wait_active("打开", 3) # 3表示的是时间,秒为
单位
# 在文件选择输入框中输入文件的地址及文件名称
autoit.control_send("打开", "Edit1",r"C:UsersLiaoFeiPicturesSaved Pictures333.jpg")
# 在弹出窗口中点击打开按钮
autoit.control_click("打开", "Button1")
time.sleep(10)
driver.quit()



