Selenium—Web界面测试工具
1. Selenium可以使用录制工具录制脚本,测试页面。
2. Selenium可以生成类html代码,java代码,ruby代码等。
3. Selenium录制工具根据id属性定位html元素
需要的软件
1.安装Firefox,Selenium IDE插件,Firebug插件。
2.解压Selenium的selenium-remote-control包,得到selenium-server.jar。
3.获取selenium-java-client-driver.jar,用于java语言的Selenium开发。
Selenium IDE的使用
1.FireFox--工具--selinum IDE
2.点击录制按钮,开始记录一个测试。可以使用浏览器进行操作。
3.点击Selenium IDE的停止录制按钮,可以看到html,Java,Ruby等形式的脚本语言。
SeleniumIDE除了记录 Html请求和AJAX调用的操作。其他不涉及通讯的操作,也会被录制。其他的自动脚本录制工具,如WebLoad,LoadRunner都是只记录http请求,不能真正记录对页面的操作。
4.脚本可以格式化为多种语言。
5.selinum使用xpath和css等选择html元素。
Selenium工作原理
Selenium不同于一般的测试工具。一般的脚本测试工具录制脚本,实际上都是通过拦截浏览器收发的http请求来实现的。事实上并没有办法录制用户对html页面的操作。
当然,对那些执行压力测试的工具来说,这类模拟已经足够。
Selenium的脚本录制工具是通过监听用户对html页面的操作来录制脚本的。Selenium是真正能够监听用户对html页面的操作的录制工具。Selenium完全了解用户操作的html页面。
Selenium可以生成7种语言的脚本:html,java,C#,ruby,python,perl,php。
你可以直接在SeleniumIDE中执行html格式的脚本。你机器上的FireFox将会执行Selenium脚本。
Selenium生成的Html格式的脚本,是Selenium使用Html的语言元素自己开发的一套脚本语言。
如果你要执行其他语言格式的Selenium脚本,那么,你需要使用Selenium服务器。6种语言的使用方法都是一样的。
Selenium执行内部原理
SeleniumServer通过网络与Selenium客户端通讯,接收Selenium测试指令。
SeleniumServer通过向浏览器发出JavaScript调用实现对Html页面的全面追踪,并通过网络把执行结果返回给Selenium客户端。
Selenium客户端一般使用单元测试技术实现,通过判断返回的结果与预期是否一致来决定程序是否运行正确。
Selenium是通过javascript来实现对Html页面的操作的。它提供了丰富的指定Html页面元素和操作页面元素的方法。
Selenium打开浏览器时,把自己的JavaScript文件嵌入网页中。然后Selenium的网页通过frame嵌入目标网页。这样,就可以使用Selenium的JavaScript对象来控制目标网页。
Selenium的JavaScript对象中,最重要的就是Selenium对象。它的作用是代表Java中的Selenium接口执行一系列的命令,让浏览器执行。
Selenium RC所支持的浏览器
*iexplore
*konqueror
*firefox
*mock
*pifirefox
*piiexplore
*chrome
*safari
*opera
*iehta
*custom
Selenium Remote Control: 服务器命令行参数
使用示例: java -jar selenium-server.jar [-interactive] [options]
-port <nnnn>: selenium服务器使用的端口号(默认 4444)
-timeout <nnnn>: 我们放弃前(超时)所等待的秒数
-interactive: 进入交互模式。参考教程获取更多信息
-multiWindow: 进入被测试网站都在单独窗口打开的模式,并且selenium支持frame
-forcedBrowserMode <browser>: 设置浏览器模式(例如,所有的会话都使用"*iexplore",不管给getNewBrowserSession传递什么参数)
-userExtensions <file>: 指定一个被载入到selenium的JavaScript文件
-browserSessionReuse: 停止在测试间重新初始化和替换浏览器。
-alwaysProxy: 默认情况下,我们尽量少的进行代理;设置这个标志将会强制所有的浏览器通讯都通过代理
-firefoxProfileTemplate <dir>: 一般情况,我们在每次启动之前都生成一个干净的Firefox设置。您可以指定一个目录来让我们将您的设置拷贝过来,代替我们生成的。
-debug: 进入debug模式,会有更多的跟踪调试信息
-htmlSuite <browser> <startURL> <suiteFile> <resultFile>: 使用指定的浏览器(例如"*firefox")在指定的URL(例如"http://www.google.com"),运行一个单独的HTML Selenese (Selenium Core)测试套件然后立即退出。您需要指定HTML测试套件的绝对路径还有我们将会生成的HTML测试结果文件的路径。
-proxyInjectionMode: 进入代理注入模式,这个模式中selenium服务器作为进入测试程序的所有内容的代理服务器。在这个模式下,可以跨多个域访问,并且还支持如下附加参数:
-dontInjectRegex <regex>: 附加的正则表达式,代理注入模式能够使用它决定是否进行注入
-userJsInjection <file>: 指定一个JavaScript文件,将它注入到所有页面中
-userContentTransformation <regex> <replacement>: 一个正则表达式,对所有被测HTML内容进行匹配;第二个string将会对替换所有匹配的内容。这个标志能够使用多次。一个简单的适合使用这个参数的例子:如果你添加"-userContentTransformation https http"那么测试应用程序的HTML中的所有"https"字符串都会被替换为"http"。