软件测试实习0630-Selenium RC的工作原理
来源:互联网 发布:cos鞋淘宝店铺推荐 编辑:程序博客网 时间:2024/06/09 14:23
Selenium RC的工作原理
1.RC的组成
(1)Selenium Server
Selenium Server负责控制浏览器行为,总的来说,Selenium Server主要包括3个部分:Launcher,Http Proxy,Selenium 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 Server的Launcher启动浏览器,把Selenium Core加载入浏览器页面当中,并把浏览器的代理设置为Selenium Server的Http 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 Server的Http 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(); }}
- 软件测试实习0630-Selenium RC的工作原理
- Selenium RC 的工作原理
- Selenium RC工作原理和测试案例
- Selenium RC工作原理
- Selenium RC(Selenium 1.0)的工作原理
- 菜鸟学自动化测试(七)----selenium RC 工作原理
- Selenium 1(Selenium RC)工作原理
- 软件测试实习0629-selenium
- 软件测试 实习工作
- 深入了解Selenium RC工作原理
- Selenium 的工作原理
- 针对Selenium RC的自动化测试框架
- selenium grid的工作原理
- Selenium私房菜系列6 -- 深入了解Selenium RC工作原理(1)
- Selenium私房菜系列6--深入了解Selenium RC工作原理(1)
- Selenium私房菜系列7--深入了解Selenium RC工作原理(2)
- Selenium私房菜系列6 -- 深入了解Selenium RC工作原理(1)
- Selenium私房菜系列7 -- 深入了解Selenium RC工作原理(2)
- 卡特兰数
- Welcome to my blog
- 数据库中的左连接(left join)和右连接(right join)区别
- 菜鸟咋了,菜鸟也有一天会变成老鸟的
- 程序员技术练级攻略
- 软件测试实习0630-Selenium RC的工作原理
- 10.Java 集合 - WeakHashMap
- JavaScript的垃圾收集
- tasklet
- 论文笔记-Augmented Lagrange Multiplier Method for Recovery of Low-Rank Matrices
- Python 装饰器
- 01、让一个盒子类的若然元素自动两端对齐(通过after伪类)
- java多任务并发处理--Callable<?>
- libsvm 在vs中的应用