如何在python中使用selenium的示例


Posted in Python onDecember 26, 2017

最近基于selenium写了一个python小工具,记录下学习记录,自己运行的环境是Ubuntu 14.04.4, Python 2.7,Chromium 49.0,ChromeDriver 2.16

selenium简介

selenium提供了一个通用的接口,可模拟用户来操作浏览器,比如用于自动化测试等.

selenium的核心是WebDriver,它提供了一组接口,这些接口能够操作各种跨平台的浏览器.各大浏览器厂商.

各大浏览器厂商也支持Selenium,将其作为浏览器的一部分.

selenium工具集提供了WebDriver,Selenium IDE,Selenium-Grid等

Selenium 1.0 + WebDriver = Selenium 2.0

Selenium WebDriver是Selenium Remote Control(Selenium-RC)的继承者.

  1. WebDriver提供了更简单和简洁的接口,克服了Selenium-RC API一些限制.
  2. 相比Selenium 1.0,WebDriver是面向对象式的服务.
  3. WebDriver驱动浏览器更有效率,提供了比Selenium 1.0更多的功能
  4. Selenium RC只能在单机上运行,WebDriver则提供了远程操作的功能

selenium基本使用

selenium运行需要什么

主要包括三部分:selenium selenium,浏览器driver,浏览器selenium selenium是一组通用的接口,而不同的浏览器提供其自身的driver(大部分是官方的),浏览器则被模拟控制操作的终端.

安装

pip install selenium --upgrade
apt-get install chromium-browser
wget http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux`getconf LONG_BIT`.zip
unzip chromedriver_linux32.zip
cp chromedriver /usr/local/share
chmod +x /usr/local/share/chromedriver
ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver 
ln -s /usr/bin/chromedriver /usr/local/share/chromedriver

简单的使用

from selenium import webdriver
driver = webdriver.Chrome('/usr/local/bin/chromedriver')
driver.get('http://mail.sina.net');
print(driver.title)

API使用

可参考/usr/local/lib/python2.7/dist-packages/selenium

Chrome WebDriver

selenium.webdriver.chrome.webdriver.WebDriver(executable_path='chromedriver', port=0, chrome_options=None, service_args=None, desired_capabilities=None, service_log_path=None)

ChromeOptions

可以通过ChromeDriver session配置ChromeDriver session ChromeDriverconvenient methods for setting ChromeDriver-specific capabilities

from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument('--disable-logging')
chrome_options.add_experimental_option('prefs', {'download.default_directory':
'/tmp'})
chrome_options.binary_location='/usr/bin/chromium-browser'
driver = webdriver.Chrome(chrome_options=chrome_options)

直接使用DesiredCapabilities

ChromeOptions是构建在DesiredCapabilities之上的,为了使用DesiredCapabilities,必须知道capability的Key/value对.

chrome_options = Options()
capabilities={}
capabilities['platform'] = "WINDOWS"
capabilities['version'] = "10"
capabilities.update(chrome_options.to_capabilities())
driver = webdriver.Chrome(desired_capabilities=capabilities)

chromedriver运行方式

The ChromeDriver class不断的创建实例,会浪费很多的时间,可以通过两个方式解决.

使用ChromeDriverService

import selenium.webdriver.chrome.service as service
service = service.Service('/usr/bin/chromedrive')
service.start()
capabilities = { }
driver = webdriver.Remote(service.service_url, capabilities)
driver.get('http://mail.sina.net');
print(driver.title)

开启单独的ChromeDriver服务

./chromedriver
driver = webdriver.Remote('http://127.0.0.1:9515', DesiredCapabilities.CHROME)
driver.get('http://mail.sina.net');

RemoteWebDriverServer

The RemoteWebDriver is composed of two pieces: a client and a server. The client is your WebDriver test and the server is simply a Java servlet, which can be hosted in any modern JEE app server. The server will always run on the machine with the browser you want to test.

wget http://selenium-release.storage.googleapis.com/2.53/selenium-server-standalone-2.53.0.jar
java -jar selenium-server-standalone-2.53.0.jar

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub',des
desired_capabilities=DesiredCapabilities.CHROME)
driver.get('http://mail.sina.net');

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python日志模块logging简介
Apr 13 Python
Python 编码Basic Auth使用方法简单实例
May 25 Python
Python对列表中的各项进行关联详解
Aug 15 Python
Python3中列表list合并的四种方法
Apr 19 Python
Django重置migrations文件的方法步骤
May 01 Python
Python3中函数参数传递方式实例详解
May 05 Python
Python Django 前后端分离 API的方法
Aug 28 Python
numpy:找到指定元素的索引示例
Nov 26 Python
关于Numpy中的行向量和列向量详解
Nov 30 Python
Python一行代码解决矩阵旋转的问题
Nov 30 Python
python爬虫爬取监控教务系统的思路详解
Jan 08 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
Oct 15 Python
Python使用Matplotlib实现Logos设计代码
Dec 25 #Python
利用Python2下载单张图片与爬取网页图片实例代码
Dec 25 #Python
Python实现生成随机数据插入mysql数据库的方法
Dec 25 #Python
python数据抓取分析的示例代码(python + mongodb)
Dec 25 #Python
Python实现生成随机日期字符串的方法示例
Dec 25 #Python
浅谈Python NLP入门教程
Dec 25 #Python
Python图形绘制操作之正弦曲线实现方法分析
Dec 25 #Python
You might like
自定义PHP分页函数
2006/10/09 PHP
PHP封装返回Ajax字符串和JSON数组的方法
2017/02/17 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
(JS实现)MapBar中坐标的加密和解密的脚本
2007/05/16 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
javascript中的对象创建 实例附注释
2011/02/08 Javascript
javascript textarea光标定位方法(兼容IE和FF)
2011/03/12 Javascript
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
2015/12/22 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
2016/09/06 Javascript
利用js判断手机是否安装某个app的多种方案
2017/02/13 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
vue-cli 使用axios的操作方法及整合axios的多种方法
2018/09/12 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
vue 子组件watch监听不到prop的解决
2020/08/09 Javascript
Python基于scrapy采集数据时使用代理服务器的方法
2015/04/16 Python
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
Python通过matplotlib画双层饼图及环形图简单示例
2017/12/15 Python
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
Python OpenCV处理图像之图像像素点操作
2018/07/10 Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
2019/06/21 Python
django基础学习之send_mail功能
2019/08/07 Python
Django框架 Pagination分页实现代码实例
2019/09/04 Python
深入了解NumPy 高级索引
2020/07/24 Python
Python如何利用Har文件进行遍历指定字典替换提交的数据详解
2020/11/05 Python
小米官方旗舰店:Xiaomi
2020/08/07 全球购物
高中数学教师求职信
2013/10/30 职场文书
材料专业毕业生求职信
2014/02/26 职场文书
班主任师德师风自我剖析材料
2014/10/02 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
丧事答谢词
2015/01/05 职场文书
暑期辅导班宣传单
2015/07/14 职场文书
暑假生活随笔
2015/08/15 职场文书