关于selenium的好的学习资料:
- 官方User Guide: http://seleniumhq.org/docs/
- 官方API: http://selenium.googlecode.com/git/docs/api/java/index.html
- 中文API: http://download.csdn.net/detail/testingba/3811354
- 虫师博客: http://www.cnblogs.com/fnng/category/349036.html
- github: https://github.com/SeleniumHQ/selenium/
- selenium github docs: http://seleniumhq.github.io/selenium/docs/api/py/
- 乙醇的各种语言的selenium https://github.com/easonhan007/webdriver_guide/blob/master/README.md
- 易百的webdriver: http://www.yiibai.com/selenium/selenium_webdriver.html
python版本2.7,selenium版本2.53.6,火狐版本
一个采用selenium webdirver+unittest +python,或 selenium webdirver+junit4/testNG+java,另外一个是采用 robot+selenium2library
Selenium 是web自动化测试工具集,包括IDE、Grid、RC(selenium 1.0)、WebDriver(selenium 2.0)等。
Selenium IDE 是firefox浏览器的一个插件。提供简单的脚本录制、编辑与回放功能。
Selenium Grid 是用来对测试脚步做分布式处理。现在已经集成到selenium server 中了。
RC和WebDriver 更多应该把它看成一套规范,在这套规范里定义客户端脚步与浏览器交互的协议。以及元素定位与操作的接口。
WebDriver可以理解成是一层基础的协议规范,假如说:Webdriver API(接口规范)说,我们要提供一个页面元素id的定位方法。
Ruby的webdriver模块是这么实现的:
require "selenium-webdriver"
find_element(:id, "xx")
python的webdriver模块是这么实现的:
from selenium import webdriver
find_element_by_id("xx")
Java的webdriver模块是这么实现的:
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
findElement(By.id("xx"))
Robot Framework + selenium是这么实现的:
因为Robot Framework 对于底层过于封装,所以,我们看不到语言层面的方法定义。所以,Robot Framework 提供给我们的方法如下:
1、导入Robot Framework 版本的selenium(webdriver)
2、使用id方法
webdriver不能组织和执行用例,把写好的操作页面元素的方法组织起来并实现测试结果,是由编程语言的单元测试框架去完成的,如
java 的junit和testng单元测试框架,python 的unittest单元测试框架等
selenium2常用API介绍
点击操作 |
WebElement button=driver.findElement(By.id("login")); button.click(); |
|
清除操作 |
WebElement username=driver.findElement(By.id("username_input")); username.clear(); |
|
获取元素属性的值 |
<input type="text" value="" autocomplete="off" placeholder="用户名" id="u" class="form-control" onblur="checkFailNum()" name="username"> WebElement WebElement username=driver.findElement(By.id("u")); u.getAttribute(“placeholder”); 这样就能获取到“用户名”这三个字了。 |
|
获取元素的文本 |
<button class="btn btn-major" id="loginBtn" type="button">登录</button> WebElement中提供一个getText()方法可以获取,代码如下: |
|
判断元素是否显示 | 方法有个返回值类型是boolean,也就是说如果元素显示了返回true,如果没有显示返回false。 WebElement login= driver.findElement(By.id(“loginBtn”)); login.isDisplayed(); |
|
元素是否被选择 |
有这样的情况,复选框或者是单选框,我们需要判断这个框是不是被勾选了。 如果勾选了,返回true,如果没有勾选返回false。 WebElement checkbox= driver.findElement(By.id(“checkbox_id”)); |
|
元素是否被启用 |
有些按钮,可能在页面显示上被灰掉,就是不让点击,这个时候这个按钮是不可用的。 那么我们如何判断这个按钮是否能被点击呢?请用isEnabled()方法,如果可用返回true,如果不可用返回false。 WebElement login= driver.findElement(By.id(“loginBtn”)); |
|
提交操作 |
在有表单的界面上,可以不通过点击按钮进行提交操作,这就需要用到submit()方法 比如一个元素的源码: |
|
iframe |
有时候我们在定位一个页面元素的时候发现一直定位不了,反复检查自己写的定位器没有任何问题,代码也没有任何问题。这时你就要看一下这个页面元素是否在一个iframe中,这可能就是找不到的原因之一。 页面源代码为: <td>Iframe</td>
<td class="widgetStyle">
<iframe width=800 height=330 name=aa frameborder=0 src="./demo1.html"></iframe>
如果要返回到以前的默认content,可以使用: |
|
操作下拉选择框 |
思路是:先定位出你要处理的下拉框(元素),然后将此元素传入Select对象中,接着用Select中的相关方法来选取下拉值 我们先要定位这个Select下拉框(元素) 然后由Select来操作下拉框 |
|
处理弹出来的对话框 |
Alert a = driver.switchTo().alert();此方法可以获取当前页面弹出的alert。 获取alert文本方法:a.getText(); |
|
处理浏览器弹出的新窗口 |
既然是新窗口,肯定是要先切换到新窗口,且每个窗口都有自己的句柄,唯一标识这个窗口,只要找到新窗口的句柄,问题就迎刃而解。 首先获得当前句柄,以便后边跳回: if(current_handles == it.next()) continue; |
|
执行JS脚本 |
有时候我们需要JS脚本来辅助我们进行测试,比如我们用JS赋值或者用js执行点击操作等。 ((JavascriptExecutor) driver).executeScript(js); 执行之后会在浏览器上弹出一个alert,显示内容是“hello,this is a alert!” 方法二: |
|
摘自:http://www.cnblogs.com/yajing-zh/category/746391.html
WebDriver 支持 Firefox (FirefoxDriver)、IE (InternetExplorerDriver)、Opera (OperaDriver) 和 Chrome (ChromeDriver) 由于国内禁止了http://code.google.com和http://www.seleniumhq.org/download/的软件下载,可以去csdn下载,有很多童鞋共享了软件。
一、Firefox:
不需要下载FirefoxDriver,直接编写代码即可
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('https://www.baidu.com/')
二、IE:
1、下载IEDriverServer.exe(机器安装IE浏览器)
2、将IEDriverServer.exe放在python的安装目录C:Python27(装python环境时,已经将C:Python27添加到系统环境变量Path下面了)或者放到IE的安装目录下,并将该 目录添加到系统环境变量Path下面;
如何不添加环境变量,也可以在代码里这样写:
from selenium import webdriver
import os
Iedriver = "C:Program FilesInternet ExplorerIEDriverServer.exe"
os.environ["webdriver.chrome.driver"] = Iedriver
browser = webdriver.Chrome(Iedriver )
browser.get('https://www.baidu.com/')
三、Chrome:
1、下载ChromeDriver.exe
2、将ChromeDriver.exe放在python的安装目录C:Python27(装python环境时,已经将C:Python27添加到系统环境变量Path下面了)或者放到chrome的安装目录下,并将 该目录添加到系统环境变量Path下面;
如何不添加环境变量,也可以在代码里这样写:
from selenium import webdriver
import os
chromedriver = "C:Program Files (x86)GoogleChromeApplicationchromedriver.exe"
os.environ["webdriver.chrome.driver"] = chromedriver
browser = webdriver.Chrome(chromedriver)
browser.get('https://www.baidu.com/')