selenium学习笔记

 

selenium学习笔记之一 实现原理

 

1.使用方式,分为IDE方式和脚本驱动方式:

IDE方式。目前只支持FireFox。是一个FireFox插件,只要录制脚本,即可进行回放,添加断言等,很方便但通用性不足(只支持FF);

脚本驱动方式之一。中间加一个Remote Control Server,Remote Control Server实质上就是开启一个Http代理服务器,它在驱动浏览器之前,会设置localhost:4444(Server自己)为浏览器的代理服务器,这样由Server驱动浏览器发出的所有请求,浏览器连接网络时又都会回到Server,Server再去请求实际的网络内容并返回给浏览器进行显示。客户端驱动脚本代码可以用多语言书写脚本,甚至脚本也不需要自己写,只需要用FireFox的IDE插件录制脚本,并以Java或者Ruby等格式保存即可,非常方便。

脚本驱动方式之二。不采用代理服务器方式,而是设置浏览器的一些安全限制,使其可以执行跨站脚本等。

脚本驱动方式实现图1 完全代理方式

参考http://seleniumhq.org/docs/05_selenium_rc.html#introduction

脚本驱动方式实现图2 设置安全策略方式

 

参考http://seleniumhq.org/docs/05_selenium_rc.html#introduction

 

 

学习笔记之二  WebDriver及其它

WebDriver是直接驱动浏览器,不需要Remote Control Server进行一层代理,它支持多种浏览器,包括Chrome、IE、FF等。而且其类库也与Selenium兼容,但不需要注入JS代码或者修改代理等方式,是增加功能的Selenium。

现在性能领域的前端性能分析平台,浏览器驱动用的就是WebDriver实现的,因此不需要用到Remote Control。

而代理,可以用来解决一个统计加载时间的问题,代理负责在返回的内容中加入初始化打点和末尾计时的JS函数,并将值添加到html文本的一个div中/或标题中,在统计模块看来,每一个返回的HTML页面都是计时过了的,统计模块的WebDriver负责读取这个值就行了。

 

WebDriver的最大好处是不需要Remote Control Server!而且可以用Java或C#等语言编写测试脚本。

示例如下:

package org.openqa.selenium.example; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.ie.InternetExplorerDriver; public class Selenium2Example { public static void main(String[] args) throws Exception { // The Firefox driver supports javascript WebDriver driver = new InternetExplorerDriver(); // Go to the Google Suggest home page driver.get("http://www.google.com/webhp?complete=1&hl=en"); // Enter the query string "Cheese" WebElement query = driver.findElement(By.name("q")); query.clear(); query.click(); query.sendKeys("cheese"); query=driver.findElement(By.name("btnG")); query.click(); // Sleep until the div we want is visible or 5 seconds is over } }  

 

你可能感兴趣的:(selenium学习笔记)