软件测试实习0630-Selenium RC的工作原理

来源:互联网 发布:cos鞋淘宝店铺推荐 编辑:程序博客网 时间:2024/06/09 14:23

Selenium RC的工作原理

1.RC的组成


(1)Selenium Server

Selenium Server负责控制浏览器行为,总的来说,Selenium Server主要包括3个部分:LauncherHttp ProxySelenium Core。其中Selenium Core是被Selenium Server嵌入到浏览器页面中的。其实Selenium Core就是一堆JS函数的集合,就是通过这些JS函数,我们才可以实现用程序对浏览器进行操作。

2)Client Libraries:

写测试案例时用来控制Selenium Server的库。

SeleniumRC 与Testcase的关系

(1)测试案例(Testcase)通过Client Lib的接口向Selenium Server发送Http请求,要求和Selenium Server建立连接。Selenium Server是一个独立的中间服务器(确切地说是代理服务器),它可以架设在其他机器上!所以测试案例通过发送HTTP请求去控制Selenium Server

(2)Selenium ServerLauncher启动浏览器,把Selenium Core加载入浏览器页面当中,并把浏览器的代理设置为Selenium ServerHttp Proxy

(3)测试案例通过Client Lib的接口向Selenium Server发送Http请求,Selenium Server对请求进行解析,然后通过Http Proxy发送JS命令通知Selenium Core执行操作浏览器的动作。

(4)Selenium Core接收到指令后,执行操作。

(5)浏览器收到新的页面请求信息(因为在(4)中,Selenium Core的操作可能引发新的页面请求),于是发送Http请求,请求新的Web页面。
由于Selenium Server在启动浏览器时做了手脚,所以Selenium Server会接收到所有由它启动的浏览器发送的请求。(6)SeleniumServer接收到浏览器的发送的Http请求后,自己重组Http请求,获取对应的Web页面。

(7)Selenium ServerHttp Proxy把接收的Web页面返回给浏览器。

 

同源策略

同源策略,它是由Netscape提出的一个著名的安全策略

现在所有支持JavaScript的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。当一个浏览器的两个tab页中分别打开来百度和谷歌的页面当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,即检查是否同源,只有和百度同源的脚本才会被执行。

package test;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.AfterClass;import org.testng.annotations.BeforeClass;import org.testng.annotations.Test;//import java.util.Date;import java.util.concurrent.TimeUnit;public class Test_share {        //private static Logger logger = Logger.getLogger(test_share.class);//      boolean res = true;        //private String errmsg = "";//      Date stime = new Date();        //public testReporter testReporter = new testReporter();//      private String loginUrl = "http://1.163.com/";//      private String loginUrl = "http://club.mail.163.com/jifen/index.do";//      WebDriver driver;        //      @BeforeClass//      public void setupBrowser(){//              //启动chrome浏览器//              System.setProperty("webdriver.chrome.driver","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");//              driver = new ChromeDriver();//              //设置页面等待15秒超时//              driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);//              //开页面//              driver.get(loginUrl);//      }         WebDriver driver;          private String baseUrl="http://1.163.com/";          @BeforeClass          public void setUp(){                  System.setProperty("webdriver.chrome.driver","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");              driver = new ChromeDriver();             driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);             driver.get(baseUrl);          }        @Test        public void testExchange() throws InterruptedException{                driver.findElement(By.linkText("首页")).click();            driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);            driver.findElement(By.linkText("十元专区")).click();            driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);            driver.findElement(By.linkText("最新揭晓")).click();            driver.findElement(By.linkText("晒单分享")).click();            driver.findElement(By.linkText("手机平板")).click();            driver.findElement(By.cssSelector("li.selected > a")).click();            driver.findElement(By.cssSelector("img[alt=\"Apple iPhone6s Plus 64g 颜色随机\"]")).click();            driver.findElement(By.cssSelector("span.btn-txt")).click();            driver.findElement(By.id("quickBuy")).click();            driver.findElement(By.linkText("×")).click();/*              //通过id找文本框                WebElement element = driver.findElement(By.id("id_username_txt"));                //清除输入框中策内容                element.clear();                //填入账号                element.sendKeys("yedazhuang2014");                //填密码                WebElement element2 = driver.findElement(By.id("id_password_txt"));                element2.clear();                element2.sendKeys("123456789a");                //点击提交按钮                WebElement element3 = driver.findElement(By.xpath("//a/span"));                Thread.sleep(1000);                element3.click();                //检查页面title                System.out.println("page title is: " + driver.getTitle());                //检查url                System.out.println("当前url是:"+driver.getCurrentUrl());                //跳转到目标页面                driver.get("http://club.mail.163.com/jifen/sanqu/list.do");                Thread.sleep(3000);                                WebElement topic = driver.findElement(By.xpath("//a/font[text()='[兑换]']"));                topic.click();                Thread.sleep(3000);                                //获取窗口句柄                String[] handles = new String[driver.getWindowHandles().size()];                driver.getWindowHandles().toArray(handles);                driver.switchTo().window(handles[1]);                driver.findElement(By.xpath("/html/body/div[4]/div[2]/div/div/div/div[2]/div/div[2]/span/a")).click();*/        }        @AfterClass         public void tearDownDriver(){                driver.quit();        }}


0 0