之前有整理过Selenium的使用,这里重新用python整理一下
对象选择
1 | from selenium import webdriver |
节点交互
1 | # 节点交互 |
动作链
1 | # 比如说模拟鼠标拖拽,键盘按键等 |
运行JavaScript
1 | browser.get('https://www.zhihu.com/explore') |
获取节点信息
1 | logo = browser.find_element(By.CLASS_NAME, 'logo-image') |
切换Frame
如果网页中存在iframe节点,Selenium默认是在父Frame中操作的,如果需要定位到子Frame中,需要使用switch_to.frame
方法
1 | # <iframe frameborder="0" id="iframeResult" style="height: 245.48px;"></iframe> |
延时等待
- 隐式等待
1 | # 因为一些js加载、ajax加载速度的原因,所以如果网页框架加载结束立马获取源代码结果会不完整,所以必要时需要等待 |
- 显式等待
1 | browser = webdriver.Chrome() |
前进、后退
1 | browser.back() |
Cookie
1 | browser.add_cookie({'name': 'name', 'domain': 'www.zhihu.com', 'value': 'germey'}) |
网页标签页切换
1 | browser.get('https://www.baidu.com') |
反屏蔽
网站通过检测window.navigator
对象中是否包含webdriver
属性来判断请求是否来自于Selenium
1 | from selenium import webdriver |
无头模式
1 | option = ChromeOptions() |
用户数据持久化
1 | # 设置user-data-dir参数路径,这样之前登陆过的信息就会保存在此路径下,下次打开页面在cookie不过期的前提下可直接登录 |