python selenium教程.pdf_Python实战:selenium教程(12)
什么是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)相关推荐
- 《Python数据分析与挖掘实战》第12章(中)——协同推荐
本文是基于<Python数据分析与挖掘实战>的实战部分的第12章的数据--<电子商务网站用户行为分析及服务推荐>做的分析. 由于此章内容很多,因此,分为三个部分进行分享--数据 ...
- 《Python数据分析与挖掘实战》第12章(下)——协同推荐
本文是基于<Python数据分析与挖掘实战>的实战部分的第12章的数据--<电子商务网站用户行为分析及服务推荐>做的分析. 由于此章内容很多,因此,分为三个部分进行分享--数据 ...
- python全栈工程师 pdf_python全栈工程师项目开发实例实战入门教程百度云
python全栈工程师项目开发实例实战入门教程百度云 课程目录: 开学典礼 pycharm的基本使用 Python基本语法 数值类型数据及运算 字符串的基本操作 字符串的常用方法 列表的基本使用 列表 ...
- python爬取推特的详细教程_使用Selenium Python进行网页抓取[Twitter+Instagram]
我正在尝试根据地理位置在Instagram和Twitter上进行网络抓取. 我可以运行一个查询搜索,但我在重新加载网页到more和存储字段到数据帧方面遇到了挑战.在 我确实找到了一些没有API密钥的w ...
- python爬虫入门教程pdf-Python爬虫实战入门教程.pdf
Python 爬虫实战入门教程 州的先生 <Python 爬虫实战入门教程> 作者:州的先生 微信公众号:州的先生 博客: 2018/3/24 1 Python 爬虫实战入门教程 州的先生 ...
- python抓取教学_Python Selenium 实战教学:爬取每日天气
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:气象学渣 一.准备工作 1.Selenium的介绍与安装 Selen ...
- 11小时 python自动化测试从入门到_从设计到开发Python接口自动化测试框架实战,资源教程下载...
课程名称 从设计到开发Python接口自动化测试框架实战,资源教程下载 课程简介: 课程从接口基础知识入门,从抓包开始,到接口工具的运用,再到常见接口库.接口开发.Mock服务.unittest框架的 ...
- python工业互联网应用实战13—基于selenium的功能测试
本章节我们再来说说测试,单元测试和功能测试.单元测试我们在数据验证章节简单提过了,本章我们进一步如何用单元测试来测试view的功能代码:同时,也涉及一下基于 selenium 的功能测试做法.笔者过去 ...
- python3自动化测试书籍推荐_免费送书 | 《Selenium 3+Python 3自动化测试项目实战:从菜鸟到高手》...
点击上方蓝色字体,关注我们 免费送书 2019年就剩「2个月」了,你的读书计划进行得如何? 莫踌躇,光荣之路马上送你本书! 读完它,请为你的2019年画上个美丽的圈圈! <Selenium 3+ ...
最新文章
- git 常用命令整理
- Linux之自动化部署
- C#的常见算法(面试)(转)
- 华为如何拍火烧云_华为手机拍照功能介绍-设置通用功能
- CentOS上安装Python3.7.4
- linux 内存一直在增加,linux – 缓存内存和共享内存总和超过总内...
- matplotlib的colorbar设置显示的刻度个数和指定的刻度值
- linux socket通信编程之c语言(客户端和服务器程序)
- mysql 策略_MySQL 密码策略
- 用户,用户组,文件和目录权限详解
- 安装cuda10.1
- 【优化算法】世界杯优化算法(WCOA)【含Matlab源码 1427期】
- 【灰色系统】—— 灰色系统的定义及其理论内容
- 滴滴+头条+网易游戏研发面经
- 嵌入式linux ucgui,嵌入式开发-uCGUI中文手册-uCGUI 简介.pdf
- Image MagicK 常用命令
- JDK1.8 Collection知识点与代码分析--TreeMap
- 成长是一个时辰一个时辰熬出…
- 运营商拆除2G基站,老家的老人机还有信号吗?
- 必备的 Linux 性能诊断分析工具!(文末送书)