selenium基础

1) 、selenium 1 的基础讲解

Selenium RC 是如何运转的:
包含的两个组件:
1、Selenium server 它负责启动和关闭浏览器,解释执行从测试程序传来的Selenium命令,就像一个HTTP代理一样
(这就是为什么它能访问没有FQ的谷歌浏览器的原因)。 截取和验证浏览器与待测应用(??)之间的HTTP消息

这个代理也有一个好处: 就是每一个浏览器只能让用户在一个站点去搜索访问,不能在其他的站点去访问(这就是同源规则)
----没有同源规则。你可在任何站点读取你的银行账目信息

过程就是 :java脚本运行 ,命令就会传给远程控制服务器(Remote Control Server),经其解释之后 运行浏览器。
详解:
注意:--------------(因为这个服务器绑定了Selenium Core这个JavaSript程序,并将其嵌入到浏览器中 来解释执行java脚本命令)---------------------

当浏览器的tab1要运行一个脚本时,便会进行同源检查,只有和www.baidu.com同源的脚本才能被执行,所谓同源,就是指域名、协议、端口相同

2)、 selenium 2= WebDriver1 + selenium 1
selenium RC ==================>Selenium Driver
WebDriver 的JavaScript执行器,会封装所有JavaScript(函数)

selenium 的工具组件:
1、selenium 2(selenium webdriver)提供了极佳的测试工具特性,如关联的面向对象API
2、selenium 1(selenium remote control)支持更多的浏览器,支持更多的编程语言(Java、javaScript Ruby PHP)
3、selenium IDE(集成开发环境)是firefox的插件,有图形界面来录制和回放脚本。此插件只是用来做原型工具,不用希望
你使用这个工具来运行所有的测试脚本。除此之外,它还是一个 集成的开发环境
4、selenium—grid 可以并行的多个测试环境之下测试脚本,实现脚本的并发测试执行。缩短大量测试脚本集合的执行时间。

1.1)、详细说说 WenDriver:
我们的官网是这样说明它的作用的: WebDriver is a clean,fast framework for automated testing of webapps
WebDriver 针对于各个浏览器而开发,取代了嵌入到被测web应用中的 JavaScript。与浏览器的紧密集成支持创建更加高级的测试,
避免了JavaScript安全模型所带来的限制。除了来自与浏览器厂商的支持,webDriver 还可以用操作系统级的调用 来模拟用户输入 操作。
WebDriver 支持多种浏览器,还支持android和iPhone的应用测试。它还包含一个基于 HtmlUnit的无界面实现,称为 HtmlUnitDriver。
WebDriver API可以通过Python、Ruby、java.c#访问。支持开发成员使用他们自己的编程语言来创建测试。

就是说 WebDriver提供了丰富的API 以实现访问DOM、运行javaScript、模拟键盘输入操作等
1.2)、使用的话:
第一种,将WebDriver的JAR包 直接手动添加到 你项目中的CLASSPATH。
第二种,如果使用的是 maven构建你的项目,只需要在pom.xml文件中加入下面的依赖项即可。版本是:2.25.0
<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>selenium-java</artifactId>

<version>2.25.0</version>

</dependency>

<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>selenium-server</artifactId>

<version>2.25.0</version>

</dependency>
WebDriver的API遵从“Best Fit”原则,在保持良好的用户体验和灵活性之间找到一个最佳的平衡点
第三种,使用HtmlUnitDriver,HtmlUnitDriver只会在内存中执行这段代码,不会弹出一个真实的页面。例子如下:
packageorg.openqa.selenium.example;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

public class Example {
public static void main(String[] args) {
// Create a new instance of the html unit driver //就是创建一个HtmlunitDriver的一个实例
// Notice that the remainder of the code relies on the interface,
// not the implementation. //注意,剩下的代码 都是依赖于接口 而不是实现
WebDriver driver = new HtmlUnitDriver();

// And now use this to visit Google
driver.get("http://www.google.com");

// Find the text input element by its name
WebElement element = driver.findElement(By.name("q"));

// Enter something to search for
element.sendKeys("Cheese!");

// Now submit the form. WebDriver will find theform for us from the element
element.submit();

// Check the title of the page
System.out.println("Page title is: " +driver.getTitle());
}
}

如果想用Firefox浏览器,只需改为WebDriver driver = new FirefoxDriver()即可。
前提是你的Firefox被安装在默认的位置
如果你的 Firefox没有安装在指定的位置,你可以设置“webdriver.firefox.bin“环境变量的值来指定它的位置。在java中可以使用如下daima :
System.setProperty("webdriver.firefox.bin","thelocation of firefox");

如果想使用chrome浏览器的话 就相对要麻烦一点。首先你需要下载一个ChromeDriver(下载地址:http://code.google.com/p/chromedriver/downloads/list)
这个程序又谷歌团队提供的,你可以看做它是 连接WebDriver和chrome浏览器的桥梁。然后启动chromeDriver,你会得到一个Url以及监听端口。
然后使用 webDriver =newRemoteWebDriver(url,DesiredCapabilities.chrome())创建一个chromeWebDriver进行操作。
当然,你可以在一个子线程中启动chromeDriver,并设置给 wenDriver。
File file = new File(your chromedriverfile path);

ChromeDriverService service = newChromeDriverService.Builder().usingChromeDriverExecutable(file).usingAnyFreePort().build();

service.start();

WebDriver webDriver = new ChromeDriver(service);

…..

…..

….

service.stop();

1.3).Webdriver如何工作 ,即它的工作原理是什么?
说是------------------WebDriver之所以能跟浏览器 进行交互,是因为浏览器已经实现了某些协议。而这些协议是使用JSON 通过HTTP进行传输。------------------------------
它的实现 使用了经典的 Client-Server模式。客户端发送一个请求request,服务器返回一个请求response

@1: Client 调用WebDriver API的机器
@2: Server 运行浏览器的 机器,Firefox浏览器直接实现了WebDriver的通信协议,而Chrome和IE是通过
ChromeDriver 和InternetExploreDriver 实现的
@3: session 服务器需要 维护浏览器的 Session,从客户端发过来的请求头中包含了Session信息,
服务器将会执行 相应的 浏览器页面。
@4: WebElement 这是WebDriver API中的对象,代表着 页面上的一个DOM元素

例子,如下代码是“命令” firefox 跳转到google主页:
WebDriver driver =new FirefoxDriver(); //实例化一个driver
driver.get("http://www.google.com");

过程如下: 1.浏览器(就是以上的测试代码)向远程服务器(remote server)发送“我要谷歌搜索的 搜索页面”的请求
2、如果 远程服务器是 已经实现了这个接口,那remote server 就会跳转到这个 Url地址,并返回一个response:
{"name":"get","sessionId":"285b12e4-2b8a-4fe6-90e1-c35cba245956","status":0,"value":""}

response部分包含:
name: 请求名 get,或者说远程服务器端 实现的方法名,表示跳转到 谷歌主页面
session : 当前session的id
satus :请求执行的 状态码
value :就像百度主页面的 “百度一下”title一样、

2. Selenium RC : (代理服务器)
2.1 Selenium RC是selenium 家族的核心工具,Selenium RC 支持多种不同的语言编写自动化测试脚本,
通过selenium RC 的服务器作为代理服务器去访问应用从而达到测试的目的。
2.2 selenium RC 使用分Client Libraries 和Selenium Server。

1). Client Libraries 库主要主要用于编写测试脚本,用来控制selenium Server 的库。

2).Selenium Server 负责控制浏览器行为,总的来说,Selenium Server 主要包括3 个部分:
Launcher、 Http Proxy、 Core。

2.1).Selenium Core 是被Selenium Server 嵌入到浏览器页面中的。
Selenium Core就是一堆JavaScript函数的集合,就是通过这些JavaScript函数,我们才可以实现用程序对浏览器进行操作。

2.2).Launcher 用于启动浏览器,把Selenium Core 加载到浏览器页面当中,
并把浏览器的代理设置为Selenium Server 的Http Proxy。

注意: ---------------2中WebDriver可以说是 1中Selenium RC的替代品---------------------------------------------------

2.3. Selenium2.0:包括了WebDriver。其实在Selenium2.0中主推的就是WebDriver这个模块。事实上WebDriver是Selenium RC的替代品,
因为Selenium需要保留向下兼容性的原因,Selenium RC才没有被彻底的抛弃,如果使用Selenium开发一个新的自动化测试项目,那么我们强烈推荐使用Selenium2.0的WebDriver进行编码。

Selenium2.0 = Selenium1.0 + WebDriver
注意: --------- Selenium RC的实质是在浏览器中运行一个JavaScript应用程序,使用每个浏览器内置的JavaScript解释器来解释和执行Selenium的命令集合。---------------

2.4 Selenium WebDriver与上述的Selenium RC是不同的。WebDriver针对不同的浏览器进行开发,取代了RC那样嵌入到被测试的WebApp程序中的JavaScript,
使用了与浏览器更加集成的方式进行测试,避免了RC使用JavaScript而可能遇到的安全模型限制导致的问题等。

------------看完书之后的总结摘抄

时间: 2024-11-23 01:34:12

selenium基础的相关文章

selenium基础(警告框的处理)

selenium基础(警告框的处理) 在webdriver中处理JavaScript所产生的的警告框有三种类型 alert confirm prompt 划转到警告框的方法是:driver.switch_to.alert 然后使用text.accept.dismiss.send_keys等方法进行操作 text:返回(获取)alert/confirm/prompt中的文字信息 accpet():接受现有的警告框 dismiss():解散现有的警告框 send_keys(keysToSend):发

selenium基础(下拉菜单操作)

selenium基础(下拉菜单操作) 非select/option元素: 1.触发下拉列表出现 2.等待下拉列表中的元素出现,然后进行选择元素即可. select/option元素: 下拉框操作-Select类selenium提供Select类来处理select/option 1.引入 from selenium.webdriver.support.ui import Select 2.创建Select对象,传入元素 ele = driver.find_element_by_xpath(元素定位

selenium 基础(一)

selenium安装 pip install selenium selenium操作浏览器原理 早期selenium 1.0 用的selenium RC, 后来selenum2集合了selenium1.0 + webdriver,selenium RC被webdriver替换.通过webdriver,测试脚本(例如python)可以方便的通过API操作浏览器页面元素,包括打开,关闭,最大化,最小化,元素定位,元素单击等等等.但是selenium操作浏览器还需要一个驱动程序,不同的浏览器如file

selenium基础操作

一. selinum优势 页面级测试,模拟用户真实操作 强大library,支持页面元素各类操作 多浏览器支持(chrome,firefox,ie) 多语言支持(python,java,C#,php,ruby) 二. 需要安装软件 firefox  firebug  seleniumIDE chrome  chromedirver ie  iedriverserver python2.7  selenium lib 三. Selenium IDE 对于初学者,可以先使用selenium IDE录

2.自动化测试之python+selenium基础

元素的定位    浏览器控制    鼠标事件      键盘事件    获取验证 设置等待      sleep休眠    定位一组元素   多表单切换  多窗口切换 警告框处理    上传文件      下载文件      cookies操作 javascript调用 截图          关闭窗口      验证码处理 一.元素的定位 1.webdriver提供的8种页面元素定位方法:     id/name/class name/tag name/link text/partial li

Selenium基础知识

本人博客文章网址:https://www.peretang.com/basic-knowledge-of-selenium/ 什么是Selenium Selenium是一个自动化测试工具 是一组不同的工具 其支持在多个浏览器平台上执行测试 为什么需要Selenium 1. 使原本手动的测试变成自动化 2. 更容易完成频繁的回归测试 3. 更快速的反馈给开发人员与测试人员 4. 几乎无限次迭代的测试执行 5. 更有纪律的测试用例 6. 自动生成缺陷报告 7. 补充手动测试的遗漏 Selenium组

Selenium 基础

Selenium用于做浏览器的自动化测试 回归测试 AndroidDriver,ChromeDriver,EventFiringWebDriver,FirefoxDriver,HtmlUnitDriver,InternetExplorerDriver,PhantomJSDriver,RemoteWebDriver,SafariDriver 1. Selenium用于做浏览器的自动化测试 2. 回归测试:回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误. 3

python selenium 基础框架

base_page.py 1 # coding=utf-8 2 import time 3 from selenium.common.exceptions import NoSuchElementException 4 import os.path 5 from unittest3.framework.logger import Logger 6 7 # create a logger instance 8 logger = Logger(logger="BasePage").getl

python+selenium基础之XPATH定位

世界上最远的距离大概就是明明看到一个页面元素矗在那里,但是我却定位不到!! selenium定位元素的方法有很多种,像是通过id.name.class_name.tag_name.link_text等等,但是这些方法局限性太大,拿id属性来说,首先一定不会每个元素都有id属性,其次元素的id属性也不一定是固定不变的.所以这些方法了解一下即可,我们真正需要熟练掌握的是通过xpath和css定位,一般只要掌握一种就可以应对大部分定位工作了. 下面总结一下xpath的定位方法,结合自己练习的实例加深一