1.单选框和复选框
-
单选框 type:radio
-
定位-->点击
-
判断是否被选中
-
元素.is_selected()
-
-
-
复选框 type:checkbox
-
只选择一个---->同单选框一样
-
全选
-
定位所有复选框
-
遍历
-
判断是否被选中
-
点击
-
-
-
选择部分
-
将部分提取出来生成一个列表格式,做筛选
-
-
2.浏览器加载项实现免登陆(了解)
-
手动登录一次,并且记住密码
-
火狐浏览器
-
1.找配置文件夹路径 profile_directory变量名保存
-
2.profile = webdriver.FirefoxProfile(profile_directory)
-
3.driver = webdriver.Firefox(profile)
-
4.打开需要免登陆的地址
-
-
谷歌浏览器
-
1.个人资料路径 user_data_dir = "--user-data-dir=路径"
-
2.options = webdriver.ChromeOptions()
-
3.options.add_argument(user_data_dir)
-
4.driver = webdriver.Chrome(options=options)
-
5.打开需要免登陆的地址
-
3.富文本操作
-
富文本
-
可以编辑输入文字的输入框
-
-
操作富文本相当于操作iframe
4.上传文件
-
对于input类型的type=file
-
send_keys("文件路径")
-
-
非input标签类型的,可以借助autoit工具或者SendKeys第三方库。
5.cookie
因为HTTP协议是无连接,无状态的
cookie---记录用户信息,身份识别,不安全
客户端--浏览器
cookie保存的信息按照键值对形式保存的
sessionID和用户的IP绑定
session---保存在服务端
token---针对移动端
5.1cookie组成
{'domain': 'baidu.com', 'expiry': 3715061771.33889, 'httpOnly': False, 'name': 'BAIDUID', 'path': '/', 'secure': False, 'value': '365A71E423ECB961F95747D0BB3C7F5D:FG=1'}
-
domain: cookie的域名
-
httpOnly:预防XSS攻击--跨站脚本攻击
-
name: cookie名称 必须存在一个属性
-
path: cookie产生的路径
-
secure: 定义cookie安全性
-
value: cookie名称对应的值 必须存在一个属性
-
expiry: cookie有效期
5.2cookie操作
-
获取所有的cookie
-
driver.get_cookies() # 格式,列表嵌套字典[{},{},{}.....]
-
-
添加cookie
-
driver.add_cookie(字典格式参数)
-
5.3验证码处理
-
2.1 去掉验证码(风险)
-
2.2 万能验证码
-
2.3 验证码识别技术(不推荐使用)
-
2.4 操作cookie 1.获取登录后的cookie 通过浏览器F12或抓包工具 2.将登录后的cookie添加到脚本中(确定具体需要使用那些值) driver.add_cookie(字典格式) 3.执行刷新操作 driver.refresh()
-
2.5 设置浏览器加载项
6.元素等待
1.sleep
-
强制等待-----Python代码
2.隐式等待
-
针对的是整个页面;在固定等待时间内,检测整个页面的元素是否加载成功
-
implicitly_wait()
-
参数:时间---最大等待时间,单位秒s
-
3.显式等待
-
针对具体元素:在固定等待时间内,检测元素是否存在---检测方式---轮询
-
WebDriverWait 类
-
WebDriverWait(driver,timeout).until(method)
-
driver --浏览器
-
timeout --最大等待时间
-
method --将一个方法作为参数使用
-
-
7.EC模块
expected_conditions---预期条件:对selenium中一些方法做的封装
-
EC模块一般和WebDriverWait配合使用
-
WebDriverWait(driver,timeout).until(EC.方法)
-
-
title_is(预期标题) ---判断页面标题是否和预期标题完全一致
作业 day_4
1.课堂代码 抄1遍,敲2遍
2.总结前四天学习内容
敏捷开发流程
用户想法----->产品---->需求(优先级,上线时间)------->需求池----->开发,测试,产品决定提取哪些需求
开会决定下一个周期工作内容
周期:一周/2周 以1周为例
每周周五:开发,测试,产品开会决定下周的工作内容
周一------周三:开发时间
周一:分析需求,排列每个需求的交付时间,最迟的交付时间周三下班前
如果开发认为周三无法交付,提前报风险,风险评估(开发,测试,产品负责人)
周四,周五:测试时间
产品---开发---测试---运维