如何在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内置函数之filter map reduce介绍
Nov 30 Python
Python打包可执行文件的方法详解
Sep 19 Python
详解MySQL数据类型int(M)中M的含义
Nov 20 Python
Java编程迭代地删除文件夹及其下的所有文件实例
Feb 10 Python
python线程池threadpool使用篇
Apr 27 Python
python XlsxWriter模块创建aexcel表格的实例讲解
May 03 Python
django框架model orM使用字典作为参数,保存数据的方法分析
Jun 24 Python
对python中assert、isinstance的用法详解
Nov 27 Python
flask利用flask-wtf验证上传的文件的方法
Jan 17 Python
python网络编程:socketserver的基本使用方法实例分析
Apr 09 Python
Python OpenCV读取中文路径图像的方法
Jul 02 Python
用Python爬取英雄联盟的皮肤详细示例
Dec 06 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的单引号和双引号 字符串效率
2009/05/27 PHP
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
PHP中构造函数和析构函数解析
2014/10/10 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
PHP数据库编程之MySQL优化策略概述
2017/08/16 PHP
如何在PHP中使用数组
2020/06/09 PHP
XHTML-Strict 内允许出现的标签
2006/12/11 Javascript
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
EasyUI在表单提交之前进行验证的实例代码
2016/06/24 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
ES6新特性四:变量的解构赋值实例
2017/04/21 Javascript
JS图片轮播与索引变色功能实例详解
2017/07/06 Javascript
JS严格模式知识点总结
2018/02/27 Javascript
vue组件实现弹出框点击显示隐藏效果
2020/10/26 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
[04:12]第二届DOTA2亚洲邀请赛选手传记-Newbee.Sccc
2017/04/03 DOTA
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
python统计一个文本中重复行数的方法
2014/11/19 Python
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
Python学习笔记之自定义函数用法详解
2019/06/08 Python
python3实现猜数字游戏
2020/12/07 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
eBay德国站:eBay.de
2017/09/14 全球购物
护理自我鉴定范文
2013/10/06 职场文书
考博专家推荐信
2014/05/10 职场文书
入党个人总结范文
2015/03/02 职场文书
开学第一周值周总结
2015/07/16 职场文书
2016三八妇女节慰问信
2015/11/30 职场文书
Vue Mint UI mt-swipe的使用方式
2022/06/05 Vue.js