8-07 3,135 views
介绍
Selenium
Selenium(http://docs.seleniumhq.org/)是一个Web应用自动化测试工具集,可以在多个浏览器平台上执行测试用例。Selenium包含以下几个工具:
1)Selenium 1 (Selenium RC or Remote Control):Selenium 1的核心是一个JavaScript库,通过该库可以和浏览器中的页面进行交互。Selenium RC基于该库,可以使用多种语言开发测试用例,在多个浏览器平台上执行测试用例。
2)Selenium 2 (Selenium WebDriver):Selenium 1基于JavaScript库,因此受限于浏览器对于JavaScript的安全限制,Selenium 1对于浏览器中的页面交互也存在着很多限制。Selenium 2基于WebDriver,而WebDriver基于浏览器和操作系统提供的原生方法,因此Selenium 2可以直接操作浏览器,避免了JavaScript的安全限制。Selenium 2也可以使用多种语言开发测试用例,在多个浏览器平台上执行测试用例。
3)Selenium IDE:Selenium IDE是一个FireFox插件,可以记录用户操作并导出成可重复执行的脚本。
4)Selenium-Grid:Selenium-Grid可以用来扩展Selenium RC,例如可以在不同的机器上并行执行测试用例。
由于存在较多限制,已不推荐使用Selenium RC,而推荐使用Selenium WebDriver。Selenium WebDriver支持的浏览器有:
1)Google Chrome;
2)Internet Explorer 6, 7, 8, 9, 10;
3)Firefox;
4)Safari;
5)Opera;
6)HtmlUnit;
7)PhantomJS;
8)Android;
9)iOS。
PhantomJS
PhantomJS(http://phantomjs.org/)是一个基于WebKit的JavaScript API,它原生支持各种Web标准,例如DOM解析、CSS选择器、JSON、Canvas、SVG等。PhantomJS可用于:
1)无GUI浏览器下的Web站点测试;
2)网页截屏;
3)基于DOM API访问和操作网页;
4)监控网页加载。
安装
Selenium
Selenium支持的语言有:
1)Java;
2)C#;
3)Python;
4)Ruby;
5)PHP;
6)Perl;
7)JavaScript。
这里介绍Python Selenium包的安装。操作系统为Linux,并已安装Python 2.7.5和pip,直接使用pip安装Selenium:
pip install selenium
PhantomJS
下载PhantomJS的可执行包phantomjs-1.9.8-linux-x86_64.bz2,解压后将bin/phantomjs拷贝至/bin下即可。Shell中输入phantomjs可打开REPL,也可以使用phantomjs执行代码文件:
phantomjs hello.js
hello.js代码如下所示:
1 2 |
console.log('Hello, world!'); phantom.exit(); |
应用
基于Selenium+PhantomJS模拟浏览器访问网页,输入用户名和密码并点击登录按钮,网页HTML代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 |
<tr> <td>用户名:</td> <td><input type="text" id="username" placeholder="用户名"></td> </tr> <tr> <td>密码:</td> <td><input type="password" id="password" placeholder="密码"></td> </tr> <tr> <td colspan="2"><button id="logon">登录</button></td> </tr> |
Python代码如下所示:
1 2 3 4 5 6 7 8 9 10 |
# -*- coding: utf-8 -*- from selenium import webdriver driver = webdriver.PhantomJS() driver.set_page_load_timeout(300) driver.get('http://xxx.xxx.xxx.xxx/login.html') driver.find_element_by_id('username').send_keys(u'username') driver.find_element_by_id('password').send_keys(u'password') driver.find_element_by_id('logon').click() |
版权属于: 我爱我家
转载时必须以链接形式注明原始出处及本声明。