多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

Selenium RC的工作原理-自动化测试

更新时间:2022-06-16 09:09:54 作者:多测师 浏览:207

  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的库。

Selenium RC的工作原理-自动化测试

  2.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();

  }

  }

  以上内容为大家介绍了自动化测试中的Selenium RC的工作原理,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部