一.文件上传
1.定位下载文件的按钮元素
2.使用send_keys(r'文件路径')来上传文件
二.cookie
在网页上怎么查看cookies?
1.打开F12------点击application
2.在左侧选择点击cookies
具体操作代码如下:
# 导包
from selenium import webdriver
import time
# 实例化一个浏览器对象
diver = webdriver.Chrome()
# 打开百度的网页
diver.get('https://www.baidu.com')
# 获取所有的cookies
print(diver.get_cookies())
# 获取其中一条
print(diver.get_cookie('ZFY'))
# 添加cookie
cookie_dict = {"name": "张三", "value": "20"}
diver.add_cookie(cookie_dict)
print(diver.get_cookies())
# 删除其中一个cookie
diver.delete_cookie('张三')
print(diver.get_cookies())
# 删除所有的cookie
diver.delete_all_cookies()
print(diver.get_cookies())
三.验证码
验证码处理:
1.在测试环境下去掉验证码----需要开发配合
2.设置万能码----程序后门
3.图片验证码识别技术python---tesseract-----不建议这种方式,因为不稳定
4.cookie伪装
四.元素等待
强制等待:time.sleep(秒数) 无论元素是否加载完毕,都要等这么久
隐式等待:driver.implicitly_wait(10) # 等待页面元素加载完毕,最多等10秒,如果页面所有元素在3秒内加载完毕,那么就只等待3秒
隐式等待--缺点:
1.需要等待整个页面加载完毕之后才会往下执行,但是存在页面还未加载完毕,想要操作的元素已经加载完毕,因此会浪费等待时间
2.最多超过等待时间之后,页面未加载完毕,接着往下执行,可能存在元素找不到的问题
优点:针对driver的整个周期有效,只需要设置一次
五.显示等待
# 导包
from selenium.webdrivr.support.wait umport WebDriver Wait
语法:
webDriverWait(driver,超时时间,检测频率,忽略异常)
# 查找某个元素,一直查找10秒,每隔0.5秒检测一次,存在返回元素,不eb存在抛出TimeoutException的异常,其中unti方法的message参数是可以抛出异常信息的参数
element = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id("someId"),message="报错信息")
# 实现逻辑分析:
1.webDriverWait(driver,10) 实例化一个显示等待类
2.调用until方法,把匿名函数传给method参数
3.method参数使用method(self._driver)来达到查找元素的功能
六.__call__方法:
执行时机:当直接执行对象的时候,如:对象() 就会直接调用__call__方法
作用:把对象当做一个函数来进行调用
七.Ec模块-----expected_conditions
# 使用的时候用as取别名未EC
1.导包
from selenium.webddriver.support import expected_coditions as EC
概念:EC模块实际上就是selenium官方封装的用来断言的方法
断言:判断 预期结果 和 实际结果是否相符合
EC.title_is('百度一下,你就知道')(driver)
EC.title_contains('百度一下')(driver)
# 判断预期和实际,返回布尔值