如何在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 strip lstrip rstrip使用方法
Sep 06 Python
python使用mysqldb连接数据库操作方法示例详解
Dec 03 Python
Python自定义scrapy中间模块避免重复采集的方法
Apr 07 Python
详解Python中的多线程编程
Apr 09 Python
Python的Twisted框架中使用Deferred对象来管理回调函数
May 25 Python
python pandas库中DataFrame对行和列的操作实例讲解
Jun 09 Python
tensorflow实现图像的裁剪和填充方法
Jul 27 Python
python 美化输出信息的实例
Oct 15 Python
python 实现调用子文件下的模块方法
Dec 07 Python
python编写简单端口扫描器
Sep 04 Python
numpy 声明空数组详解
Dec 05 Python
TensorFlow自定义损失函数来预测商品销售量
Feb 05 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格式化日期实例分析
2014/11/12 PHP
php实现在限定区域里自动调整字体大小的类实例
2015/04/02 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
不用锚点也可以平滑滚动到页面的指定位置实现代码
2013/05/08 Javascript
js验证模型自我实现的具体方法
2013/06/21 Javascript
js判读浏览器是否支持html5的canvas的代码
2013/11/18 Javascript
javascript中interval与setTimeOut的区别示例介绍
2014/03/14 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
基于jquery和svg实现超炫酷的动画特效
2014/12/09 Javascript
jQuery中replaceAll()方法用法实例
2015/01/16 Javascript
javascript中substring()、substr()、slice()的区别
2015/08/30 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
require.js的用法详解
2015/10/20 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
BootStrap中的table实现数据填充与分页应用小结
2016/05/26 Javascript
JS面向对象的程序设计相关知识小结
2018/05/26 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
vuex实现数据状态持久化
2019/11/11 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
Vue如何将页面导出成PDF文件
2020/08/17 Javascript
[01:30:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第二场 2月2日
2021/03/11 DOTA
python基础教程之python消息摘要算法使用示例
2014/02/10 Python
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
python开发之thread线程基础实例入门
2015/11/11 Python
Python学习小技巧之列表项的拼接
2017/05/20 Python
python八皇后问题的解决方法
2018/09/27 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
python处理RSTP视频流过程解析
2020/01/11 Python
CSS3实现类似翻书效果的过渡动画的示例代码
2019/09/06 HTML / CSS
把富文本的回车转为br标签
2019/08/09 HTML / CSS
局域网定义和特性
2016/01/23 面试题
公司中层干部的自我评价分享
2014/03/01 职场文书
关于爱国的标语
2014/06/24 职场文书
聊聊redis-dump工具安装问题
2022/01/18 Redis
Python创建SQL数据库流程逐步讲解
2022/09/23 Python