python使用selenium操作edge浏览器
安装所需文件
python库
pip install selenium
edge浏览器驱动
查看浏览器版本链接edge://settings/help
驱动下载网址
选择跟自己浏览器版本一致的下载
将驱动程序放入指定目录
将下载好的驱动解压复制到Python安装目录下Scripts中,并将驱动msedgedriver.exe
重命名为MicrosoftWebDriver.exe
,文件名不对会导致调用不到。
简单测试
1 | from selenium import webdriver # 引入模块 |
基本操作
打开网页
driver.get(url)
比如刚才的测试例子。
元素定位方法
1 | find_element_by_id() |
在element
变成elements
就是找所有满足的条件,返回数组。
控制浏览器操作
控制浏览器窗口大小
1 | driver.set_window_size(480, 800) |
浏览器后退,前进,刷新
1 | driver.back() |
常用方法
点击和输入
1 | driver.find_element_by_id("kw").clear() # 清除文本 |
提交
可以在搜索框模拟回车操作
1 | search_text = driver.find_element_by_id('kw') |
其他
size: 返回元素的尺寸。
text: 获取元素的文本。
get_attribute(name): 获得属性值。
is_displayed(): 设置该元素是否用户可见。
鼠标操作
在 WebDriver 中, 将这些关于鼠标操作的方法封装在 ActionChains 类提供。
ActionChains 类提供了鼠标操作的常用方法:
1 | perform()# 执行所有 ActionChains 中存储的行为; |
举个例子:
1 | from selenium import webdriver |
键盘操作
1 | send_keys(Keys.BACK_SPACE) 删除键(BackSpace) |
1 | # 输入框输入内容 |
获取断言信息
1 | title = driver.title # 打印当前页面title |
等待页面加载完成
显示等待
显式等待使WebdDriver等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常(TimeoutException)。
1 | from selenium import webdriver |
WebDriverWait类是由WebDirver 提供的等待方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。具体格式如下:
1 | WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None) |
driver :浏览器驱动。
timeout :最长超时时间,默认以秒为单位。
poll_frequency :检测的间隔(步长)时间,默认为0.5S。
ignored_exceptions :超时后的异常信息,默认情况下抛NoSuchElementException异常。
WebDriverWait()一般由until()或until_not()方法配合使用,下面是until()和until_not()方法的说明。
until(method, message=‘’) 调用该方法提供的驱动程序作为一个参数,直到返回值为True。
until_not(method, message=‘’) 调用该方法提供的驱动程序作为一个参数,直到返回值为False。
在本例中,通过as关键字将expected_conditions 重命名为EC,并调用presence_of_element_located()方法判断元素是否存在。
隐式等待
如果某些元素不是立即可用的,隐式等待是告诉WebDriver去等待一定的时间后去查找元素。 默认等待时间是0秒,一旦设置该值,隐式等待是设置该WebDriver的实例的生命周期。
1 | from selenium import webdriver |
警告框处理
1 | alert = driver.switch_to_alert() |
text:返回 alert/confirm/prompt 中的文字信息。
accept():接受现有警告框。
dismiss():解散现有警告框。
send_keys(keysToSend):发送文本至警告框。keysToSend:将文本发送至警告框。
下拉框选择
1 | from selenium import webdriver |
文件上传
1 | driver.find_element_by_name("file").send_keys('D:\\upload_file.txt') # # 定位上传按钮,添加本地文件 |
cookie操作
WebDriver操作cookie的方法:
get_cookies(): 获得所有cookie信息。
get_cookie(name): 返回字典的key为“name”的cookie信息。
add_cookie(cookie_dict) : 添加cookie。“cookie_dict”指字典对象,必须有name 和value 值。
delete_cookie(name,optionsString):删除cookie信息。“name”是要删除的cookie的名称,“optionsString”是该cookie的选项,目前支持的选项包括“路径”,“域”。
delete_all_cookies(): 删除所有cookie信息
窗口截图
1 | driver.get_screenshot_as_file("D:\\baidu_img.jpg") # 截取当前窗口,并指定截图图片的保存位置 |
关闭浏览器
close() 关闭单个窗口
quit() 关闭所有窗口
直接用cookie登录方法
链接:https://www.jianshu.com/p/773c58406bdb
手动获取网页的cookie,将其序列化并存储在本地
1 | for item in cookies: |
注意
这篇文章的内容绝大多数是从网络上复制而来,没有经过实践验证,而且实测的几个基本都跑不通,只是留着给以后挖坑,不具有参考价值