1. selenium 处理cookie

driver.get_cookies()获取的是完整的cookie信息!不光有name、value,还有domain等其他信息!

# 把cookie转化为字典
cookies_dict = {cookie[‘name’]: cookie[‘value’] for cookie in driver.get_cookies()}#删除一条cookie
driver.delete_cookie("CookieName")# 删除所有的cookie
driver.delete_all_cookies()

2.页面等待

页面等待的原因:

如果网站采用了动态html技术,那么页面上的部分元素出现时间便不能确定,这个时候就可以设置一个等待时间,强制要求在时间内出现,否则报错。

页面等待的方法:

time.sleep(10)

3.selenium执行js代码

import time
from selenium import webdriverdriver = webdriver.Chrome(executable_path='/home/worker/Desktop/driver/chromedriver')
driver.get("http://www.itcast.cn/")
time.sleep(1)js = 'window.scrollTo(0,document.body.scrollHeight)' # js语句
driver.execute_script(js) # 执行js的方法time.sleep(5)
driver.quit()

4.switch方法切换的操作

4.1 切换窗口的方法如下:

一个浏览器肯定会有很多窗口,所以我们肯定要有方法来实现窗口的切换。

# 1. 获取当前所有的窗口
current_windows = driver.window_handles# 2. 根据窗口索引进行切换
driver.switch_to.window(current_windows[1])

完整代码:

import time
from selenium import webdriverdriver = webdriver.Chrome(executable_path='/home/worker/Desktop/driver/chromedriver')
driver.get("https://www.baidu.com/")time.sleep(1)
driver.find_element_by_id('kw').send_keys('python')
time.sleep(1)
driver.find_element_by_id('su').click()
time.sleep(1)# 通过执行js来新开一个标签页
js = 'window.open("https://www.sogou.com");'
driver.execute_script(js)
time.sleep(1)# 1. 获取当前所有的窗口
windows = driver.window_handlestime.sleep(2)
# 2. 根据窗口索引进行切换
driver.switch_to.window(windows[0])
time.sleep(2)
driver.switch_to.window(windows[1])time.sleep(6)
driver.quit()

4.2 iframe是html中常用的一种技术,即一个页面中嵌套了另一个网页,selenium默认是访问不了frame中的内容的,对应的解决思路:

driver.switch_to.frame()

在使用selenium登录qq邮箱的过程中,我们会发现,无法在邮箱的登录input标签中输入内容,通过观察源码可以发现,form表单在一个frame中,所以需要切换到frame中。

login_frame = driver.find_element_by_id('login_frame')   # 定位frame元素
driver.switch_to.frame(login_frame)                     # 转向到该frame中

举例:模拟登陆qq邮箱

代码如下:

import time
from selenium import webdriverdriver = webdriver.Chrome(executable_path='/home/worker/Desktop/driver/chromedriver')url = 'https://mail.qq.com/cgi-bin/loginpage'
driver.get(url)
time.sleep(2)login_frame = driver.find_element_by_id('login_frame')     # 根据id定位 frame元素
driver.switch_to.frame(login_frame)                     # 转向到该frame中driver.find_element_by_xpath('//*[@id="u"]').send_keys('1596930226@qq.com')
time.sleep(2)driver.find_element_by_xpath('//*[@id="p"]').send_keys('hahamimashicuode')
time.sleep(2)driver.find_element_by_xpath('//*[@id="login_button"]').click()
time.sleep(2)"""操作frame外边的元素需要切换出去"""
windows = driver.window_handles
driver.switch_to.window(windows[0])content = driver.find_element_by_class_name('login_pictures_title').text
print(content)driver.quit()

4.3 当你触发了某个事件之后,页面出现了弹窗提示,处理这个提示或者获取提示信息方法如下:

driver.switch_to.alert() # 跟frame一样的处理方式!

5.页面前进和后退

driver.forward()     # 前进
driver.back()        # 后退

6.selenium的优缺点

  • selenium能够执行页面上的js,对于js渲染的数据和模拟登陆处理起来非常容易
  • selenium由于在获取页面的过程中会发送很多请求,所以效率非常低,所以在很多时候需要酌情使用

selenium的使用教程2相关推荐

  1. Python爬虫4.4 — selenium高级用法教程

    Python爬虫4.4 - selenium高级用法教程 综述 Headless Chrome 设置请求头 设置代理IP 常用启动项参数options设置 Cookie操作 selenium设置coo ...

  2. Selenium Webdriver 简易教程

    Selenium是ThroughtWorks公司开发的一套Web自动化测试工具. 它分为三个组件: Selenium IDE Selenium RC (Remote Control) Selenium ...

  3. Selenium爬虫入门教程

    Selenium自动化爬取谷歌学术(学术个人档案的h指数和i10指数) Selenium自动化爬取谷歌学术 Selenium自动化爬取谷歌学术(学术个人档案的h指数和i10指数) Selenium库与 ...

  4. Selenium Webdriver系列教程(1)—快速开始

    Selenium 1.x时代已经远去,它理应躺在历史的角落里,靠着壁炉烤着火,抽着旱烟,在袅袅的升起的青烟中回忆那曾经属于自己的美好时代. 不过事实却并非如此,现今原本早应退役的selenium 1. ...

  5. selenium的使用教程3

    案例1:斗鱼爬虫 爬取斗鱼直播平台的所有房间信息:https://www.douyu.com/directory/all 思路分析: 1.1数据的位置: 每个房间的数据都在id=live-list-c ...

  6. selenium的使用教程1

    Selenium 库里有个叫 WebDriver 的 API,WebDriver 可以加载网站的浏览器,但是也可以像 BeautifulSoup 或者其他 Selector 对象一样用来查找页面元素, ...

  7. python爬虫库教程_Python爬虫Selenium库详细教程

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于Python程序员 刚接触Python的新手.小白,可以复制下面的链接去免费观看Py ...

  8. 自动化测试工具 Selenium WebDriver 入门教程

    <div class="iteye-blog-content-contain" style="font-size: 14px"></div&g ...

  9. selenium+python安装教程

    1.安装python3.8+,若有其他版本要切换到python3.8+版本的解释器,若版本过低selenium会安装失败,并新建一个python3.8+版本的项目,可在文件-->设置--> ...

最新文章

  1. 论CondConv、DynamicConv、DyNet的区别与联系
  2. Intent以及IntentFilter详解
  3. 关于 #!/bin/bash脚本头文件的类型说明
  4. 面试官:聊一下你对MySQL索引实现原理?
  5. kerberos 下运行spark 报错 Requested user hdfs is banned
  6. 如何借助配置中心ACM加速企业IT服务快速迭代
  7. Linux lsof命令使用小结
  8. snmpwalk 小工具
  9. 在Windows*上编译Tensorflow教程
  10. Ubuntu系统日志分析
  11. 【三支火把】--- 关于UEFIPCD的总结介绍
  12. 灰度世界算法(Gray World Algorithm)
  13. c++语言取整为什么要加0.5_22. 为什么 Python 中的整除是向下取整?
  14. matlab拟合RMSE,Matlab拟合工具箱的几个误差参数说明
  15. php如何大批量群发微信模板消息,如何用php实现发送微信模板消息呢?
  16. QT 操作 QLabel
  17. 去除字符串首尾的空白字符
  18. 绕过滑块验证码登陆网站的实现
  19. UE4+手柄对应按键测试
  20. 搭建网校教育系统平台的四种方式

热门文章

  1. Activemq-In-action(三)
  2. head first servlet jsp 学习笔记
  3. 《CDN 之我见》原理篇——CDN的由来与调度
  4. Android 中SharedPreferences 使用
  5. PHP命名空间学习笔记
  6. 《Python高效开发实战》实战演练——开发Django站点1
  7. 在EO中获取某字段基于表的列名
  8. python报错ordinal not in range(128)
  9. Using the Cordova Camera API
  10. [diary]极度自恋?