文章目录

  • Selenium WebDriver 简介
  • Selenium WebDriver 原理
  • Selenium WebDriver 安装
  • Selenium WebDriver 使用
    • 浏览器常用操作
    • 单对象定位
    • 一组对象定位
    • 模拟用户操作
  • 最后

Selenium WebDriver 简介


  • Selenium WebDriver是一个本地和远程的实时浏览器自动化工具,是最接近的模拟用户行为。

  • WebDriver的目标是提供一个良好设计的面向对象的API,提供了对于现代先进web应用程序测试问题的改进支持。

  • Selenium-Webdriver更好的支持页面本身不重新加载而页面的元素改变的动态网页。


Selenium WebDriver 原理


  • WebDriver是按照C/S(Client/Server) 的模式设计的。

  • WebDriver 启动目标浏览器,并绑定到指定端口。该启动的浏览器实例,做为web driver的remote server。

  • Client 端根据我们的需求以http请求形式发送给Server,并在执行各种操作后将返回值等信息返回。

  • Server端,也就是Remote server 需要依赖原生的浏览器组件(如:chromedriver.exe)来等待 Client 发送请求并做出响应。


Selenium WebDriver 安装


安装selenium库,在命令行中输入

pip install selenium

出现如下字样,则安装成功

Successfully installed selenium

下载与浏览器版本相匹配的webdriver

chromedriver.exe

http://chromedriver.storage.googleapis.com/index.html

下载后将chromedriver.exe放到python安装目录下的Scripts目录


Selenium WebDriver 使用


浏览器常用操作


启动浏览器

不同的浏览器,方式略微不同

from selenium import webdriver
#谷歌浏览器
dr = webdriver.Chrome()
#火狐浏览器
dr = webdriver.Firefox()

打开网页

执行该代码之后,自动打开你输入的网址

dr.get('http://www.baidu.com')


关闭浏览器

在工作结束后常常需要关闭浏览器,关闭浏览器的方式有两种:

  • close():关闭当前的浏览器窗口
  • quit():不仅会关闭浏览器窗口,还会彻底的退出webdriver,释放与driver server之间的连接,释放所有的资源
from selenium import webdriver
#谷歌浏览器
dr = webdriver.Chrome()
#打开网页
dr.get('http://www.baidu.com')
#退出浏览器
dr.quit()
#dr.close()

最大化浏览器

from selenium import webdriver
import time
#谷歌浏览器
dr = webdriver.Chrome()
#打开网页
dr.get('http://www.baidu.com')
#最大化浏览器
dr.maximize_window()
#便于观察
time.sleep(3)
#退出浏览器
dr.quit()
#dr.close()


自定义浏览器大小

from selenium import webdriver
import time
#谷歌浏览器
dr = webdriver.Chrome()
#打开网页
dr.get('http://www.baidu.com')dr.set_window_size(240, 320)#便于观察
time.sleep(3)
#退出浏览器
dr.quit()
#dr.close()


打印当前页面的信息

打印当前页面的title、url以及页面源码(源码过多就不进行展示了)

from selenium import webdriver
import time
#谷歌浏览器
dr = webdriver.Chrome()
#打开网页
dr.get('http://www.baidu.com')print('current_url:',dr.current_url)
print('source:',dr.page_source)
print('title:',dr.title)#便于观察
time.sleep(3)
#退出浏览器
dr.quit()
#dr.close()


实现浏览器前进和后退

后退会返回到当前网页的上一个网页,前进也会返回到当前网页的上一个网页

from selenium import webdriver
import time
import osdr = webdriver.Chrome()first_url = 'http://www.baidu.com'
dr.get(first_url)
print('current_url',dr.current_url)
time.sleep(1)second_url = 'http://www.news.baidu.com'
dr.get(second_url)
print('current_url',dr.current_url)
time.sleep(1)dr.back()
print("backing to %s"%(first_url))time.sleep(1)
dr.forward()
print("forward to %s"%(second_url))
time.sleep(1)
dr.quit()


单对象定位


  • find_element(),用于单对象定位。
  • 对象的定位和操作是webdriver的核心内容,其中操作是建立在定位的基础之上,因此对象定位的地位就越发显得重要了

演示文档

打开百度首页→鼠标右键点击→查看网页源码

webdriver提供了一系列的对象定位方法,常用的有:

by_id

通过id定位需要用id的值定位

#通过id定位
print(dr.find_element_by_id('head').text)


by_name

通过name定位需要用name的值定位

#通过name定位
dr.find_element_by_name('mp')

by_class_name

通过class name定位需要用class name的值定位

#通过name定位
dr.find_element_by_name('mp')

by_tag_name

通过tag name定位需要用标签的值(如,<a>的值为a)定位

#通过tag name定位
print(dr.find_element_by_tag_name('div').text)


by_link_text

通过链接的文字描述来定位

如匹配下面图片中的新闻链接

dr.find_element_by_link_text("新闻")


by_css_selector

不懂css selector的可以点击了解或只用上面的方式CSS介绍

#获取标签名为div的标签
dr.find_element_by_css_selector('div')

by_xpath

不懂xpath的可以点击了解或用其他的方式xpath lxml库

dr.find_element_by_xpath('/html/body/form/div/label')

获取属性

获取div标签的id属性

dr.find_element_by_tag_name('div').get_attribute('id')

获取div标签的文本内容

print(dr.find_element_by_tag_name('div').text)


一组对象定位


find_elements(),常用于定位一组对象或批量操作对象,用法与前面的单对象定位(find_element())一致(不清楚的往前面翻就行)。


模拟用户操作


element.click()

模拟用户点击对象element

#
dr.find_element_by_link_text("新闻").click()

element.send_keys

模拟用户向名为p的文本框输入python

dr.find_element_by_name('q').send_keys('python')

element.clear()

模拟用户清除输入的内容

dr.find_element_by_name('q').clear()

模拟键盘输入

模拟用户在键盘上输入

from selenium.webdriver.common.keys import Keys#模拟control+a
dr.find_element_by_id('p').send_keys((Keys.CONTROL, 'a'))
#模拟control+c
dr.find_element_by_id('p').send_keys((Keys.CONTROL, 'c'))
#模拟control+x
dr.find_element_by_id('p').send_keys((Keys.CONTROL, 'v'))

最后

可以关注一下我的公众号,最近开始写公众号,我会在上面分享一些资源和发布一些csdn上发布不了的干货

点个关注是对博主最大的支持

python爬虫工程师 成长之路八 Selenium WebDriver相关推荐

  1. python爬虫工程师 成长之路十 selenium+phantomjs+request爬取lol所有英雄头像和装备图片

    文章目录 爬取所有英雄头像 选择爬取目标 寻找图片位置 引入selenium和phantomjs 构造xpath对元素定位 获取每个英雄的名字和头像url 最终步骤 爬取装备图片 最后 爬取所有英雄头 ...

  2. python爬虫工程师 成长之路一 初识爬虫

    文章目录 爬虫简介 为什么要学习爬虫 爬虫的结构 爬虫的类型 聚焦爬虫的工作原理和过程 爬虫常用功能 搜索引擎介绍 用户爬虫 最后 爬虫简介 爬虫,就是网络爬虫,也称为网页蜘蛛.网络机器人.网络蚂蚁等 ...

  3. python爬虫工程师 成长之路六(二) 非结构化数据之lxml库

    文章目录 lxml库 介绍 lxml库 使用 最后 lxml库 介绍 lxml是一个使用python编写的库,处理XML非常方便,另外还支持XPath,(上篇博客的XPath派上用处了XPath 基础 ...

  4. python爬虫工程师 成长之路六(一) 非结构化数据之XPath

    文章目录 XPath 介绍 XPath 节点 XPath 语法 路径表达式 谓语 通配符 选取若干路径 XPath 轴 步(step) XPath 运算符 最后 XPath 介绍 XPath(XML ...

  5. 精品课python_python工程师成长之路精品课程(全套)

    python工程师成长之路精品课程(全套)  有需要联系我:QQ:1844912514 什么是Python? Python是一门面向对象的编程语言,它相对于其他语言,更加易学.易读,非常适合快速开发. ...

  6. 微专业python爬虫工程师_从零起步 系统入门Python爬虫工程师

    课程简介: 从零起步 系统入门Python爬虫工程师 大数据时代,python爬虫工程师人才猛增,本课程专为爬虫工程师打造,课程有四个阶段,爬虫0基础入门->项目实战->爬虫难点突破-&g ...

  7. 网络工程师----成长之路

    网络工程师----成长之路 常用程序快捷键命令(网络工程师) 常用CMD命令(网络工程师) 常用Linux命令(网络工程师) 问题点宝库 第一章:一.網絡工程師–简介 第二章:二.网络工程师学习阶段– ...

  8. python爬虫面试题-扣丁学堂解析Python爬虫工程师面试题汇总

    扣丁学堂解析Python爬虫工程师面试题汇总 2018-08-20 11:24:39 1629浏览 今天,扣丁学堂的小编来给大家总结一下Python爬虫的面试技巧,希望给参加Python培训的同学一点 ...

  9. python面试题网站有哪些_扣丁学堂解析Python爬虫工程师面试题汇总

    扣丁学堂解析Python爬虫工程师面试题汇总 2018-08-20 11:24:39 1664浏览 今天,扣丁学堂的小编来给大家总结一下Python爬虫的面试技巧,希望给参加Python培训的同学一点 ...

最新文章

  1. 经验分享 怎么新建PDF文件
  2. 这本《Python+TensorFlow机器学习实战》给你送到家!
  3. java isempty_Optional.isEmpty()即将加入Java吗?
  4. 【OpenCV 例程200篇】25. 图像的平移
  5. matlab读取xls、xlsx、csv文件
  6. git使用git push 命令跳出remote: Permission to Aname denied to usernameB 的问题
  7. Linux录音软件audacity安装:sudo yum install audacity
  8. php四种基础算法:冒泡,选择,插入和快速排序法PHP基础教程
  9. python生成词云教程(附带QQ聊天记录生成词云实战)
  10. Linux或Linux虚拟机桥接模式使用Python2认证Drcom
  11. 如何将视频转换成文字
  12. Word插入特殊符号
  13. videojs-dynamic-watermark: video.js 视频添加文字水印
  14. 计算机基础——4.1 数字通信入门
  15. 笔记本触控板使用技巧!
  16. oracle 关闭归档,Oracle归档的开启和关闭
  17. 百度图片批量下载助手
  18. JavaScript模拟轮播图效果
  19. 云计算学习4——Nova组件服务
  20. html5视频作为页面背景

热门文章

  1. python自己做个定时器_简单实现python定时器
  2. Python实现名片管理系统(面向对象版)
  3. 基于ffmpeg实现音视频转码
  4. Java Web 实现 QQ第三方登录
  5. android shn1 获取_Android Studio获取开发版SHA1值和发布版SHA1值的史上最详细方法
  6. 金蝶K3Cloud插件 -- 单据保存自动提交并审核(c#)
  7. 10万字C语言入门手册,历时三个月,详细的C语言教程终于出炉了,给你全新C语言入门体验
  8. Python错误集锦:pandas读取excel提示ImportError: Missing optional dependency ‘xlrd’.
  9. 什么是Qt Quick
  10. Ruby on Rails视频教程