什么是selenium ?

selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户 在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome, Opera等。selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写 及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。

Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript 的浏览器上。

selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲 染问题。

这里要说一下比较重要的PhantomJS,PhantomJS是一个而基于WebKit的服务端JavaScript API,支持 Web而不需要浏览器支持,其快速、原生支持各种Web标准:Dom处理,CSS选择器,JSON等等。 PhantomJS可以用用于⻚面自动化、网络监测、网⻚截屏,以及无界面测试

selenium集请求功能、解析功能为一体的框架

优势:可以用真实的浏览器操作,把访问页面所有的数据加载完毕

安装

1.启动anaconda终端,下载框架终端

2.输入命令,完成下载安装输入命令,下载

配置浏览器驱动

1. 浏览器驱动,必须与浏览器版本相符,首先需要检查浏览器的版本号谷歌版本

2.下载驱动

网址中下载与本机chrome浏览器对应的驱动程序,驱动程序名为chromedriver; 参考下载版本:

选择版本选择系统

3. 解压到安装路径

下载后把文件解压,然后放到本机chrome浏览器文件路径里,

例如: C:\Program Files (x86)\Google\Chrome\Application (自己的安装路径)

应用 - 右键 - 打开文件位置谷歌目录chrome.exe

4.将解压后文件chromedriver.exe复制到python的安装目录下(我的:E:\anaconda\)anaconda的python.exe目录

5.调试安装是否成功

操作完后,就可以使用以下代码直接调起浏览器了:

driver = new ChromeDriver();

from selenium import webdriver#导入库

browser = webdriver.Chrome()#声明浏览器

url = 'https:www.baidu.com'

browser.get(url)#打开浏览器预设网址

print(browser.page_source)#打印网⻚源代码

browser.close()#关闭浏览器

selenium的基本用法

声明浏览器对象

上⾯我们知道了selenium⽀持很多的浏览器:

但是如果想要声明并调⽤浏览器则需要:

from selenium import webdriver

browser = webdriver.Chrome()

browser = webdriver.Firefox()

这⾥只写了两个例⼦,当然了其他的⽀持的浏览器都可以通过这种⽅式调⽤

访问⻚⾯

from selenium import webdriver#导⼊库

browser = webdriver.Chrome()#声明浏览器

url = 'https:www.baidu.com'

browser.get(url)#打开浏览器预设⽹址

print(browser.page_source)#打印⽹⻚源代码

browser.close()#关闭浏览器

上述代码运⾏后,会⾃动打开Chrome浏览器,并登陆百度打印百度⾸⻚的源代码,然后关闭浏览器

查找元素

单个元素查找

from selenium import webdriver#导⼊库

browser = webdriver.Chrome()

#声明浏览器

url = 'https:www.taobao.com'

browser.get(url)#打开浏览器预设⽹址

input_first = browser.find_element_by_id('q')

input_two = browser.find_element_by_css_selector('#q')

print(input_first)

print(input_two)

这⾥我们通过2种不同的⽅式去获取响应的元素,第⼀种是通过id的⽅式,第⼆个中是CSS选择器,结果

都是相同的。 输出如下:

(session="9aaa01da6545ba2013cc432bcb9abfda", element="0.5325244323105505-1")>

这⾥列举⼀下常⽤的查找元素⽅法:find_element_by_name

find_element_by_id

find_element_by_xpath

find_element_by_link_text find_element_by_partial_link_text

find_element_by_tag_name

find_element_by_class_name

find_element_by_css_selector 下⾯这种⽅式是⽐较通⽤的⼀种⽅式:这⾥需要记住By模块所以需要导⼊ from selenium.webdriver.common.by import By

from selenium import webdriver

from selenium.webdriver.common.by import By

browser = webdriver.Chrome()

url = 'https://www.taobao.com'

browser.get(url)

input_1 = browser.find_element(By.ID, 'q')

print(input_1)

当然这种⽅法和上述的⽅式是通⽤的,browser.find_element(By.ID,"q")这⾥By.ID中的ID可以替换为其

他⼏个 我个⼈⽐较倾向于css

多个元素查找

其实多个元素和单个元素的区别,举个例⼦:find_elements,单个元素是find_element,其他使⽤上没

什么区别,通过其中的⼀个例⼦演示:

from selenium import webdriver

browser = webdriver.Chrome()

url = 'https://www.taobao.com'

browser.get(url)

input = browser.find_elements_by_css_selector('.service-bd li')

print(input)

browser.close()

输出为⼀个列表形式:

[,

,

,

,

,

,

,

,

,

,

,

,

,

,

,

(session="42d192ca36f75170ab489e4839df0980", element="0.73211490098068-16")>]

当然上⾯的⽅式也是可以通过导⼊from selenium.webdriver.common.by import By 这种⽅式实现

lis = browser.find_elements(By.CSS_SELECTOR,'.service-bd li') 同样的在单个元素中查找的⽅法在多个元素查找中同样存在: find_elements_by_namefind_elements_by_id

find_elements_by_xpath

find_elements_by_link_text

find_elements_by_partial_link_text

find_elements_by_tag_name

find_elements_by_class_name

find_elements_by_css_selector

元素交互操作

对于获取的元素调⽤交互⽅法

from selenium import webdriver import time

browser = webdriver.Chrome()

browser.get(url='https://www.baidu.com')

time.sleep(2)

input = browser.find_element_by_css_selector('#kw')

input.send_keys('韩国⼥团')

time.sleep(2) input.clear() input.send_keys('后背摇')

button = browser.find_element_by_css_selector('#su')

button.click()

time.sleep(10)

browser.close()

运⾏的结果可以看出程序会⾃动打开Chrome浏览器并打开百度⻚⾯输⼊韩国⼥团,然后删除,重新输⼊

后背摇,并点击搜索

Selenium所有的api⽂档:简书​www.jianshu.com

交互动作

将动作附加到动作链中串⾏执⾏

from selenium import webdriver

from selenium.webdriver

import ActionChains

browser = webdriver.Chrome()

url = "http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"

browser.get(url)

browser.switch_to.frame('iframeResult')

source = browser.find_element_by_css_selector('#draggable')

target = browser.find_element_by_css_selector('#droppable')

actions = ActionChains(browser)

actions.drag_and_drop(source, target)

actions.perform()

更多操作参考:简书​www.jianshu.com

执⾏JavaScript

这是⼀个⾮常有⽤的⽅法,这⾥就可以直接调⽤js⽅法来实现⼀些操作,

下⾯的例⼦是通过登录知乎然后通过js翻到⻚⾯底部,并弹框提示

from selenium import webdriver

browser = webdriver.Chrome()

browser.get("http://www.zhihu.com/explore")

browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')

browser.execute_script('alert("To Bottom")')

获取元素属性get_attribute('class')

from selenium import webdriver import time

browser = webdriver.Chrome()

browser.get("http://www.zhihu.com/explore")

logo = browser.find_element_by_css_selector('.zu-top-link-logo')

print(logo)

print(logo.get_attribute('class'))

print(logo.get_attribute('id'))

time.sleep(2)

browser.quit()

输出如下:

zu-top-link-logo

zh-top-link-logo

获取⽂本值text

from selenium import webdriver

browser = webdriver.Chrome()

browser.get("http://www.zhihu.com/explore")

logo = browser.find_element_by_css_selector('.zu-top-link-logo')

print(logo)

print(logo.text)

输出如下:

知乎

获取ID,位置,标签名id

location

tag_name

size

from selenium import webdriver

browser = webdriver.Chrome()

url = 'https://www.zhihu.com/explore'

browser.get(url)

input = browser.find_element_by_css_selector('.zu-top-add-question')

print(input.id)

print(input.location)

print(input.tag_name)

print(input.size)

输出如下:

0.022998219885927318-1

{'x': 759, 'y': 7}

button

{'height': 32, 'width': 66}

xpath语法XPath Óï·¨​www.w3school.com.cn

下面列出了最有用的路径表达式:

选取未知节点

XPath 通配符可用来选取未知的 XML 元素。

python selenium教程.pdf_Python实战:selenium教程(12)相关推荐

  1. 《Python数据分析与挖掘实战》第12章(中)——协同推荐

    本文是基于<Python数据分析与挖掘实战>的实战部分的第12章的数据--<电子商务网站用户行为分析及服务推荐>做的分析. 由于此章内容很多,因此,分为三个部分进行分享--数据 ...

  2. 《Python数据分析与挖掘实战》第12章(下)——协同推荐

    本文是基于<Python数据分析与挖掘实战>的实战部分的第12章的数据--<电子商务网站用户行为分析及服务推荐>做的分析. 由于此章内容很多,因此,分为三个部分进行分享--数据 ...

  3. python全栈工程师 pdf_python全栈工程师项目开发实例实战入门教程百度云

    python全栈工程师项目开发实例实战入门教程百度云 课程目录: 开学典礼 pycharm的基本使用 Python基本语法 数值类型数据及运算 字符串的基本操作 字符串的常用方法 列表的基本使用 列表 ...

  4. python爬取推特的详细教程_使用Selenium Python进行网页抓取[Twitter+Instagram]

    我正在尝试根据地理位置在Instagram和Twitter上进行网络抓取. 我可以运行一个查询搜索,但我在重新加载网页到more和存储字段到数据帧方面遇到了挑战.在 我确实找到了一些没有API密钥的w ...

  5. python爬虫入门教程pdf-Python爬虫实战入门教程.pdf

    Python 爬虫实战入门教程 州的先生 <Python 爬虫实战入门教程> 作者:州的先生 微信公众号:州的先生 博客: 2018/3/24 1 Python 爬虫实战入门教程 州的先生 ...

  6. python抓取教学_Python Selenium 实战教学:爬取每日天气

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:气象学渣 一.准备工作 1.Selenium的介绍与安装 Selen ...

  7. 11小时 python自动化测试从入门到_从设计到开发Python接口自动化测试框架实战,资源教程下载...

    课程名称 从设计到开发Python接口自动化测试框架实战,资源教程下载 课程简介: 课程从接口基础知识入门,从抓包开始,到接口工具的运用,再到常见接口库.接口开发.Mock服务.unittest框架的 ...

  8. python工业互联网应用实战13—基于selenium的功能测试

    本章节我们再来说说测试,单元测试和功能测试.单元测试我们在数据验证章节简单提过了,本章我们进一步如何用单元测试来测试view的功能代码:同时,也涉及一下基于 selenium 的功能测试做法.笔者过去 ...

  9. python3自动化测试书籍推荐_免费送书 | 《Selenium 3+Python 3自动化测试项目实战:从菜鸟到高手》...

    点击上方蓝色字体,关注我们 免费送书 2019年就剩「2个月」了,你的读书计划进行得如何? 莫踌躇,光荣之路马上送你本书! 读完它,请为你的2019年画上个美丽的圈圈! <Selenium 3+ ...

最新文章

  1. git 常用命令整理
  2. Linux之自动化部署
  3. C#的常见算法(面试)(转)
  4. 华为如何拍火烧云_华为手机拍照功能介绍-设置通用功能
  5. CentOS上安装Python3.7.4
  6. linux 内存一直在增加,linux – 缓存内存和共享内存总和超过总内...
  7. matplotlib的colorbar设置显示的刻度个数和指定的刻度值
  8. linux socket通信编程之c语言(客户端和服务器程序)
  9. mysql 策略_MySQL 密码策略
  10. 用户,用户组,文件和目录权限详解
  11. 安装cuda10.1
  12. 【优化算法】世界杯优化算法(WCOA)【含Matlab源码 1427期】
  13. 【灰色系统】—— 灰色系统的定义及其理论内容
  14. 滴滴+头条+网易游戏研发面经
  15. 嵌入式linux ucgui,嵌入式开发-uCGUI中文手册-uCGUI 简介.pdf
  16. Image MagicK 常用命令
  17. JDK1.8 Collection知识点与代码分析--TreeMap
  18. 成长是一个时辰一个时辰熬出…
  19. 运营商拆除2G基站,老家的老人机还有信号吗?
  20. 必备的 Linux 性能诊断分析工具!(文末送书)

热门文章

  1. 动态规划(九章算法)详细学习
  2. 精确的目标检测中定位置信度的获取
  3. Windows 生成双向认证的自签证书(本地测试使用)
  4. 表格插件:GridManager
  5. msf工具之木马程序制作以及伪装
  6. office多级列表编号设置
  7. 产业合作打造中国云计算实践通途
  8. 学校人力资源管理系统——需求分析(一)
  9. RK3568 ov5695摄像头
  10. 输入法管理工具IMETool