如何在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字典多条件排序方法实例
Jun 30 Python
在Docker上开始部署Python应用的教程
Apr 17 Python
详细讲解用Python发送SMTP邮件的教程
Apr 29 Python
Python实现备份MySQL数据库的方法示例
Jan 11 Python
Python使用ctypes调用C/C++的方法
Jan 29 Python
python中bs4.BeautifulSoup的基本用法
Jul 27 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
Aug 05 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
Mar 30 Python
Python grequests模块使用场景及代码实例
Aug 10 Python
PyQt5 QDockWidget控件应用详解
Aug 12 Python
python解决OpenCV在读取显示图片的时候闪退的问题
Feb 23 Python
详解Python 3.10 中的新功能和变化
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
使用sockets:从新闻组中获取文章(一)
2006/10/09 PHP
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
2013/04/28 PHP
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
Laravel 5 框架入门(一)
2015/04/09 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
2010/11/11 Javascript
jquery 学习之二 属性相关
2010/11/23 Javascript
关于递归运算的顺序测试代码
2011/11/30 Javascript
js中判断Object、Array、Function等引用类型对象是否相等
2012/08/29 Javascript
从js向Action传中文参数出现乱码问题的解决方法
2013/12/29 Javascript
详解JavaScript的流程控制语句
2015/11/30 Javascript
Javascript原型链的原理详解
2016/01/05 Javascript
js控件Kindeditor实现图片自动上传功能
2020/07/20 Javascript
微信小程序 action-sheet底部菜单详解
2016/10/27 Javascript
利用jQuery异步上传文件的插件用法详解
2017/07/19 jQuery
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
记录vue做微信自定义分享的一些问题
2019/09/12 Javascript
vue实现淘宝购物车功能
2020/04/20 Javascript
Nest.js 授权验证的方法示例
2021/02/22 Javascript
[04:41]2014DOTA2国际邀请赛 Liquid顺利突围晋级正赛
2014/07/09 DOTA
python中字符串前面加r的作用
2015/06/04 Python
python中的二维列表实例详解
2018/06/19 Python
python之pymysql模块简单应用示例代码
2019/12/16 Python
Python netmiko模块的使用
2020/02/14 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
2020/06/23 Python
CSS Grid布局教程之浏览器开启CSS Grid Layout汇总
2014/12/30 HTML / CSS
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
Super-Pharm波兰:药房和香水在一个地方
2020/08/18 全球购物
职业技术学校毕业生推荐信
2013/12/03 职场文书
校园十大歌手策划书
2014/02/01 职场文书
关键在于落实心得体会
2014/09/03 职场文书
讲座新闻稿
2015/07/18 职场文书
大学军训通讯稿(2016最新版)
2015/12/21 职场文书
JavaCV实现照片马赛克效果
2022/01/22 Java/Android