如何在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 字典与字符串的互转实例
Jan 13 Python
如何用itertools解决无序排列组合的问题
May 18 Python
解决Linux系统中python matplotlib画图的中文显示问题
Jun 15 Python
celery4+django2定时任务的实现代码
Dec 23 Python
python调用opencv实现猫脸检测功能
Jan 15 Python
对Python的多进程锁的使用方法详解
Feb 18 Python
利用Python实现Excel的文件间的数据匹配功能
Jun 16 Python
Vs Code中8个好用的python 扩展插件
Oct 12 Python
python中用Scrapy实现定时爬虫的实例讲解
Jan 18 Python
Python 如何实现文件自动去重
Jun 02 Python
利用 Python 的 Pandas和 NumPy 库来清理数据
Apr 13 Python
python 学习GCN图卷积神经网络
May 11 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
如何过滤高亮显示非法字符
2006/10/09 PHP
elgg 获取文件图标地址的方法
2010/03/20 PHP
基于JQuery实现鼠标点击文本框显示隐藏提示文本
2012/02/23 Javascript
Textbox控件注册回车事件及触发按钮提交事件具体实现
2013/03/04 Javascript
JS操作Cookie写入和读取实例代码
2013/10/20 Javascript
js中document.write的那点事
2014/12/12 Javascript
js图片模糊切换显示特效的方法
2015/02/17 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
js简单实现图片延迟加载的方法
2016/07/19 Javascript
Javascript中内建函数reduce的应用详解
2016/10/20 Javascript
AngularJs ng-change事件/指令的用法小结
2017/11/01 Javascript
AngularJS标签页tab选项卡切换功能经典实例详解
2018/05/16 Javascript
vue中使用input[type="file"]实现文件上传功能
2018/09/10 Javascript
jQuery中DOM操作原则实例分析
2019/08/01 jQuery
node.js实现带进度条的多文件上传
2020/03/27 Javascript
详解vue中多个有顺序要求的异步操作处理
2019/10/29 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
2020/04/26 Javascript
[01:17]Ti4 循环赛第一日回顾
2014/07/11 DOTA
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
Python编写百度贴吧的简单爬虫
2015/04/02 Python
Django配置celery(非djcelery)执行异步任务和定时任务
2018/07/16 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
django表单的Widgets使用详解
2019/07/22 Python
调试Django时打印SQL语句的日志代码实例
2019/09/12 Python
Python一行代码解决矩阵旋转的问题
2019/11/30 Python
解决Pytorch训练过程中loss不下降的问题
2020/01/02 Python
Python递归函数特点及原理解析
2020/03/04 Python
如何写好升职自荐信
2014/01/06 职场文书
幼儿园家长会欢迎词
2014/01/09 职场文书
科长竞争上岗演讲稿
2014/05/12 职场文书
学用政策心得体会
2014/09/10 职场文书
2014年服务员个人工作总结
2014/12/23 职场文书
2015年五一劳动节演讲稿
2015/03/18 职场文书
PHP实现rar解压读取扩展包小结
2021/06/03 PHP
Python实现双向链表
2022/05/25 Python