了解API
Selenium RC API使用命名约定,假定你理解Selenese,大量的接口是自解释的。在此,我们解释最关键以及可能不太明显的内容。
启动浏览器
setUp("http://www.google.com/", "*firefox");
这些示例中的每一个打开浏览器,并分配浏览器“浏览器实例”给一个程序变量以代表这个浏览器。这个程序变量被使用于调用来自于浏览器的方法。
创建浏览器实例需要的参数是:
host指定服务器位于的计算机的IP地址。通常,这是与客户端运行的相同的机器,在这种情况下,可以是localhost。在某些客户驱动程序中中,这是一个可选参数。port指定服务器侦听等待客户连接的TCP/IP socket端口。在某些客户驱动程序中这也是可选的。brower是你希望运行测试的浏览器。这时一个必须的参数。url测试中的应用程序的基url。这是所有的客户端库所必须的,这是用于启动browser-proxy-AUT通讯的地完整信息。
注意,某些客户端库要求,要启动浏览器必须显式地调用它的start()方法。
运行命令
一旦你有一个初始化的浏览器,并分配给一个变量(通常命名为“selenium”),你可以从浏览器变量,通过调用不同的方法让它运行Selenese命令。
selenium.type(“field-id”,”string to type”)
在后台,浏览器将实际执行一个键入操作,基本上与一个用户在浏览器中键入一样,但使用定位器和在调用中指定的字符串。
报告结果
Selenium RC没有它自己的、用于报告的机制,他允许你使用选择的编程语言按需构造一个报告。这很好,但如果你仅仅想要那些已经为你准备好的东西哪?时常一个现存的类库或测试框架可以满足你的需要,比你自己开发测试报告代码更快。
测试框架报告工具
对许多编程语言来说,测试框架是可得到的。这些,以及它们的主要功能,那个提供的一个灵活的测试引擎用来执行你的测试代码的,包括用于报告结果的库代码。例如,Java有两个常用的测试框架,JUnit和TestNG,.NET也有它自己的NUnit。
我们不会在此讲解框架本身;那个超出了本用户指南的范畴。我们仅仅介绍框架的特征,那些与Selenium有关的以及你应用的某些技术。在internet上,可以获得有关这些测试框架的很好的数据以及相关的信息。
测试报告库
用于使用你选择的编程语言报告测试结果的,特别创建的第三方库也是可得到的。这些时常支持各种各样的格式,包括HTML或PDF。
最好的方法是什么?
大部分测试框架的新手从使用框架内置的报告功能开始。从那里大多数人可以查看任何可得到的库,因为这比开发自己的要花更少的时间。当你开始使用Selenium时,毫无疑问你会为报告过程开始投入你自己的“打印语句”。那会逐步地引导你开发你自己的报告,或并行地使用一个库或测试框架。不管怎样,在一个初期的,但很短的学习曲线后,你会自然地开发适合你情况的效果最好的东西。
测试报告示例
为了演示,我们会引导你使用某些特定的、Selenium支持的某些语言的工具。在此列出的是由指南的作者常用的,以及得到广泛使用的工具。
测试报告为Java
- 如果Selenium测试案例的开发使用JUnit,则JUnit报告可以被使用于生成测试报告。详细说明参考JUnit Report
- 如果Selenium测试案例使用TestNG开发,则生成测试报告没有额外的工作需要做。TestNG框架生成一个HTML报告,列出测试结果的详细信息。更多的信息参见TestNG Report。
- ReportNG是TestNG框架的一个HTML报告插件。用于作为一个默认TestNG的HTML报告的替代。ReportNG提供一个简单、代码着色的测试结果视图。更多的信息参见ReportNG。
- 同样,如果需要一个很好的概要报告可试用一下TestNG-xslt。一个TestNG-xslt看起来像这样。
更多的信息参见TestNG-xslt。
日志Selenese命令
- Logging Selenium可以用于生成在你的测试中所有Selenese命令以及每个执行成功或失败的报告,Logging Selenium扩展Java客户端驱动程序以增加Selenese的日志能力。请参考Logging Selenium。
测试报告为Phython
- 当使用Python客户端驱动程序时,可以使用HTML TestRunner生成测试报告。参见HTML TestRunner。
测试报告为Ruby
- 使用Ruby,如果RSpec被使用于编写Selenium测试案例,那么它的HTML报告可以用于生成测试报告。参考RSpec Report以获得更多信息。
注释
如果你对一个语言无关的独立日志将做什么感兴趣,可以看看Selenium Server Logging。
增加某些调味瓶到你的测试
现在我们将接触到使用Selenium RC的全部理由,增加编程逻辑到你的测试。它与任何程序是相同的。程序流使用条件语句和迭代进行控制。此外,你可以报告进度信息使用I/O。在本节,我们将展示某些编程语言构造如何与Selenium结合解决公共的测试问题的示例。
你会发现,当你从简单的页面元素存在性的测试,到涉及多Web页的动态功能和变化的数据的测试转换时,你会需要编程逻辑来验证预期的结果。基本上,Selenium IDE不支持迭代和标准的条件语句。你可以使用嵌入在Selenese参数的javascript完成某些条件语句,然而迭代是不可能的,而且大多数的条件语句使用一个编程语言更容易完成。此外,你可能需要异常处理用于错误恢复。为这些以及其他的理由,我们编写了本节去演示公共编程技术的使用,以便给于你在自动化测试中一个极大的“验证能力”。
在本节的示例是使用C#和Java编写的,然而这代码是简单的,可以容易地改写到其他支持语言。如果你有有关面向对象编程语言的基础知识,你应该没有困难理解本节。
迭代
迭代是人们需要在他们的测试中完成的最普通的事情之一。例如,你可能希望执行一个搜索多次。或者,或许为了验证你的测试结果,你需要处理从一个数据库返回的“结果集”。
使用我们较早使用的相同的Google搜索示例,让我们检查Selenium搜索结果。这个测试可以使用Selenese:
open /
type q selenium rc
clickAndWait btnG
assertTextPresent Results * for selenium rc
type q selenium ide
clickAndWait btnG
assertTextPresent Results * for selenium ide
type q selenium grid
clickAndWait btnG
assertTextPresent Results * for selenium grid
这个代码已经被重复运行这相同的步骤3次。相同代码的多个拷贝不是一个好的编程实践,因为需要做更多的工作去维护。通过使用编程语言,我们可以迭代搜索结果,提供一个更灵活和可维护的解决方案。
用C#:
// 一个字符串的集合
String[] arr = {"ide", "rc", "grid"};
// 循环执行数组中的每隔字符串
foreach (String s in arr) {
sel.open("/");
sel.type("q", "selenium " +s);
sel.click("btnG");
sel.waitForPageToLoad("30000");
assertTrue("Expected text: " +s+ " is missing on page.", sel.isTextPresent("Results * for selenium " + s));
}
条件语句
为了演示在测试中使用条件语句,我们从一个示例开始。在运行Selenium测试时,一个公共的问题会出现,当在页面中某个预期的元素是不可得到时。例如,当运行下面的代码行时:
selenium.type("q", "selenium " +s);
如果元素“q”不在页面上,那么一个异常会抛出。
com.thoughtworks.selenium.SeleniumException: ERROR: Element q not found
这可能造成造成你的测试退出。对某些测试,那是你想要的。但当你的测试脚本有许多其他后面的测试的时候,这经常不是你想要。
一个更好的方法是首先验证元素是否真正地呈现,然后在没有的情况下采用替代的操作。让我们以Java为例。
// 如果元素是可得到的,则执行键入操作
if(selenium.isElementPresent("q")) {
selenium.type("q", "Selenium rc");
} else {
System.out.printf("Element: " +q+ " is not available on page.")
}
这个方法的好处是可以继续测试的执行,即使某些UI元素是不可得到的。
从你的测试执行JavaScript
执行JavaScript非常方便。Selenium API的getEval方法可以使用于从Selenium RC执行JavaScript。
考虑一个包含一个没有静态标识符的复选框的应用程序。在这种情况下,你可以从Selenium RC执行JavaScript获得所有复选框的id,然后检查它们。
public static String[] getAllCheckboxIds () {
String script = "var inputId = new Array();";// Create array in java script.
script += "var cnt = 0;"; // Counter for check box ids.
script += "var inputFields = new Array();"; // Create array in java script.
script += "inputFields = window.document.getElementsByTagName('input');"; // Collect input elements.
script += "for(var i=0; i<inputFields.length; i++) {"; // Loop through the collected elements.
script += "if(inputFields[i].id !=null " +
"&& inputFields[i].id !='undefined' " +
"&& inputFields[i].getAttribute('type') == 'checkbox') {"; // If input field is of type check box and input id is not null.
script += "inputId[cnt]=inputFields[i].id ;" + // Save check box id to inputId array.
"cnt++;" + // increment the counter.
"}" + // end of if.
"}"; // end of for.
script += "inputId.toString();" ;// Convert array in to string.
String[] checkboxIds = selenium.getEval(script).split(","); // Split the string.
return checkboxIds;
}
计算页面中图像的数量:
selenium.getEval("window.document.images.length;");
记住在DOM表达式中使用windows对象,因为默认引用window,而不是测试窗口。
© Copyright 2008-2012, Selenium Project. Last updated on Feb 02, 2012.
分享到:
相关推荐
快速启动selenium-RC-server
1. Download the latest version of Selenium RC 2. Unzip the file save it C:\selenium-remote-control-1.0.3 3. command prompt>java -version –> Version should grater than 1.6.0_5 4. command prompt go to ...
(1).测试案例(Testcase)通过Client Lib的接口向Selenium Server发送Http请求,要求和Selenium Server建立连接。 为什么要通过发送Http请求控制Selenium Server而不采用其他方式呢?从上文可以看出,Selenium ...
selenium rc。Selenium Server服务器jar包,java客户端驱动。
selenium-RC.rar,包含selenium-java-client-driver.jar,selenium-server.jar等
昨天群里有朋友问我selenium入门例子,我今天抽了点时间写了一段简单的代码,此代码适合刚刚学习selenium的人员参考,此代码是selenium2 RC 调用chrome driver访问百度,输入Jack_test 搜索. 代码里面含资源包:selenium...
文件为selenium-server-standalone-2.45.0.jar包,兼容最新Firefox浏览器,实现selenium+eclipse+Firefox自动化
WebDriver旨在提供一个更简单更简洁的编程接口以及解决一些Selenium-RC API的限制。Selenium-Webdriver更好的支持页面本身不重新加载而页面的元素改变的动态网页。WebDriver的目标是提供一个良好设计的面向对象的...
selenium1.0的自动化测试,selenium-remote-control-1.0.3,包含selenium-java-client-driver-1.0.1、selenium-php-client-driver-1.0.1等等
selenium web是一种自动化测试工具,有三部分组成selenium-ide;selenium-rc;selenium-grid。这里只是selenium-rc。
In order to create scripts that interact with the Selenium Server (Selenium RC, Selenium Remote Webdriver) or create local Selenium WebDriver script you need to make use of language-specific client ...
selenium-java-2.42.2.jar selenium-server-standalone-2.42.2.jar
Selenium 3.x不再能够直接运行SeleniumRC,而是通过仿真和WebDriverBackedSelenium接口来实现它。下载版本3.141.59以运行从遗留IDE导出的Selenium测试,使用SeleniumHTMLRunner。要在网格配置中使用SeleniumServer,...
selenium-RC
selenium selenium rc 自动化测试
6.Selenium私房菜系列6 -- 深入了解Selenium RC工作原理(1) 7.Selenium私房菜系列7 -- 深入了解Selenium RC工作原理(2) 8.Selenium私房菜系列8 -- 玩转Selenium Server 9.Selenium私房菜系列9 -- Selenium RC服务器...
seleniumRC有需要的可以看看,感觉这玩意官网不太好下载
In order to create scripts that interact with the Selenium Server (Selenium RC, Selenium Remote WebDriver) or create local Selenium WebDriver scripts, you need to make use of language-specific client ...
Selenium[1] 也是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7、8、9)、Mozilla Firefox、Mozilla Suite等。这个工具的主要功能包括:测试与...
selenium RC与selenium webdriver的区别