selenium学习:入门篇
折腾了1天多的selenium,发现网上的资料真的是乱七八糟,各种1和2说不清的文章。在老大的帮助下,总算是可以写一个入门级的文章了,希望帮助那些入门的人。
1. 介绍
Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。模拟用户的行为,真正的执行操作。
Selenium目前(15年)包括2个系列,一个是1.x系列,一个是2.x系列。
1.x系列是单纯的selenium,有多个Selenium IDE、Selenium Remote Control (RC) 、Selenium Grid等多个组件版本,用户可以根据自己的需要选择自己的组件使用;
1.x采用js完成跨域的访问;
2.x系列集成了webdriver的功能,也存在1.X的各个组件,但组件统一都是Selenium-server的jar包里面,而且2.x版本不再支持RC这种远程调用的方式[可能不对];
2.x使用webduriver,不存在跨域访问的问题;
网上的许多介绍都是针对1.X的。
Selenium-RC和webdriver的区别:1)对于所有类型的浏览器Selenium-RC都是使用的同一种方法:当浏览器启动时,向其中注入javascript,从而使用这些js来驱动浏览器中的AUT(ApplicationUnderTest)。WebDriver并没有使用这种技术,它是通过调用浏览器原生的自动化API直接驱动浏览器。
WebDriver与SeleniumServer:是否需要是用SeleniumServer取决于你使用WebDriver的方式。以下两种情况不需要使用SeleniumServer,WebDriver直接运行浏览器即可:1、testcases仅仅使用了Webdriver的API;2、浏览器和testcase在同一台PC上,而且testcases仅仅使用了Webdriver的API。
以下三种情况你需要结合SeleniumServer来使用WebDriver:
1)使用Selenium-Grid管理集群环境(或者虚拟机)上的testcase;
2)需要调用非本机上的不同版本的浏览器;
3)未使用任何languagebinding(java/c#/python/ruby),且有意向使用HtmlUnitDriver。
2. 功能
1)框架底层使用JavaScript模拟真实用户;
2)使浏览器兼容性测试自动化成为可能;
3) 支持多种语言执行,java、python;
3. 组件
1)Selenium IDE:一个Firefox插件,可以录制用户的基本操作,生成测试用例。随后可以运行这些测试用例在浏览器里回放,可将测试用例转换为其他语言的自动化脚本。
2)Selenium Remote Control (RC) :支持多种平台(Windows,Linux,Solaris)和多种浏览器(IE,Firefox,Opera,Safari),可以用多种语言(Java,Ruby,Python,Perl,PHP,C#)编写测试用例。
3)Selenium Grid :允许Selenium-RC 针对规模庞大的测试案例集或者需要在不同环境中运行的测试案例集进行扩展。
4. selenium2.x的使用
1)pom.xml文件添加selenium-server的依赖库;使用mvn clean install下载依赖的selenium和依赖的套件;
ps:如果你的项目是selenium1.X实现的,也可以迁移到selenium2.x上
2)添加代码:
public class WebDriverDemo { public static void main(String[] args) { DesiredCapabilities capability=DesiredCapabilities.firefox(); capability.getCapability("firefox_binary"); capability.setCapability("firefox_binary", "D:\\01 Program Software\\firefox\\firefox.exe"); // WebDriver driver = new FirefoxDriver(capability); // System.setProperty("webdriver.firefox.bin", "D:\\01 Program Software\\firefox\\firefox.exe"); //创建一个 firefox driver 实例 WebDriver driver = new FirefoxDriver(capability); //打开测试网址 driver.get("http://yundun.console.aliyun.com/"); //定义用户名和密码文本框 WebElement username=driver.findElement(By.id("fm-login-id")); WebElement password=driver.findElement(By.id("fm-login-password")); //输入用户名和密码 username.sendKeys("name"); password.sendKeys("pass"); //点击 login 登录 WebElement login=driver.findElement(By.id("fm-login-submit")); login.click(); //设置页面等待直到出现 Mail 链接 (new WebDriverWait(driver, 500)).until(new ExpectedCondition<WebElement>(){ public WebElement apply(WebDriver dr) { return dr.findElement(By.linkText("Mail")); } }); //登出 WebElement logout=driver.findElement(By.linkText("Log Out")); logout.click(); //关闭浏览器 driver.quit(); } }
这是一篇很好地selenium的学习文档:http://www.spasvo.com/ceshi/open/kygncsgj/Selenium/2014214135011.html