如何在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 连连看连接算法
Nov 22 Python
py2exe 编译ico图标的代码
Mar 08 Python
python批量修改文件后缀示例代码分享
Dec 24 Python
Python3对称加密算法AES、DES3实例详解
Dec 06 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 Python
手把手教你使用Python创建微信机器人
Apr 29 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
Aug 12 Python
python常用数据重复项处理方法
Nov 22 Python
Python利用Scrapy框架爬取豆瓣电影示例
Jan 17 Python
Python定时任务APScheduler原理及实例解析
May 30 Python
详解Python IO编程
Jul 24 Python
Python 流媒体播放器的实现(基于VLC)
Apr 28 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
对text数据类型不支持代码页转换 从: 1252 到: 936
2011/04/23 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
图片自动更新(说明)
2006/10/02 Javascript
js验证表单大全
2006/11/25 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
2015/05/04 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
谈一谈bootstrap响应式布局
2016/05/23 Javascript
用AngularJS来实现监察表单按钮的禁用效果
2016/11/02 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
jQuery Validate插件ajax方式验证输入值的实例
2017/12/21 jQuery
用Cordova打包Vue项目的方法步骤
2019/02/02 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
vue+element实现表单校验功能
2019/05/20 Javascript
微信小程序Echarts覆盖正常组件问题解决
2019/07/13 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
vue的hash值原理也是table切换实例代码
2020/12/14 Vue.js
[00:34]DOTA2上海特级锦标赛 VG战队宣传片
2016/03/04 DOTA
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
python 将有序数组转换为二叉树的方法
2019/03/26 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
计算机专业自我鉴定
2013/10/15 职场文书
法学研究生自我鉴定范文
2013/12/04 职场文书
平安建设工作方案
2014/06/02 职场文书
缓刑期间思想汇报范文
2014/10/10 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
叶问观后感
2015/06/15 职场文书
2016高考感言
2015/08/01 职场文书
Python如何配置环境变量详解
2021/05/18 Python
python pygame入门教程
2021/06/01 Python
浅谈Python协程asyncio
2021/06/20 Python
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
2022/06/14 MySQL