Selenium经典教程 selenium教程.

Slides:



Advertisements
Similar presentations
LOGO 第 9 章 Java Servlet 和 JSP 编程 孙焘. 重点: servlet 编程原理 1 servlet 的基础类与编程实现 2 JSP 编程原理 3 JSP 的常用语法 4.
Advertisements

软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
Java 程序分类 Java Application :是完整程序,需要独立的解 释器解释运行;以 “.java” 为后缀的文件,以 main() 方法作为程序入口,由 java 编译器编译生 成字节码,由 Java 解释器加载执行字节码。 Java Applet 没有 main() 方法作为程序入口,是嵌在.
Java 程序设计 案例教程 北京大学出版社 第 01 章. Java 程序设计案例教程 第 01 章 Java 语言与面向对象程序设计 Java 语言的历史 Java 语言的特点 Java 程序的分类 Java 环境配置 Eclipse 的安装 Java 程序的调试 教学目标.
LOGO 《静态网页设计》课程整体设计 电子信息工程系 计算机专业 李超燕. LOGO 2 课程在专业课程体系中的定位 3 岗位分析 目 录 1 课程的基本信息 6 本课程的特色和效果 4 教学整体设计 5 教学基本条件.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
具有梦天堂特色的 Web前端开发规范 叫我三桂吧 t.qq.com/aNd1coder.
Java程序设计教程 第一讲 Java概述.
浅析浏览器解析和渲染 偏右.
四資二甲 第三週作業 物件導向程式設計.
面向对象程序设计(Java) 徐志红
5.6 制作具有动态特效的网页 1. 层和时间轴动画 2. Dreamweaver的Behaviors(行为)概述 华东师范大学计算中心.
第8章 CSS基础知识 【学习目标】 对于一个网页设计者来说,对HTML语言一定不感到陌生,因为它是网页制作的基础,但是如果希望网页能够美观、大方,并且升级维护方便,那么仅仅知道HTML还是不够的,还需要了解CSS。了解CSS基础知识,可以为后面的学习打下基础。 本章主要内容包括: 为什么在网页中加入CSS。
P303 HTML/DHTML/CSS/JavaScript 專業HTML網頁設計 陳錦輝.
第五单元课1-3 层叠样式表.
浏览器工作原理浅析 TID Ghostzhang.
申請應備文件 /R/C A-001B/C88.
第4章 JavaScript脚本语言基础 4.1 JavaScript简介 4.2 JavaScript语法基础
14 JavaScript语言基础 JavaScript是一种轻量级、解释型的Web开发语言。所谓轻量级,就是语言的体系结构不是很庞杂,例如,没有C、Java等语言中的类、内存管理、系统管理等高深的知识范畴;所谓解释型,就是语言在浏览器或服务器等环境中直接被解释执行,不需要对源代码进行编译操作。
第三章 使用XMLHttpRequest对象
第二章 JAVA语言基础.
5.1 – 表格(FORM) 輸入元素 : 兩種傳遞方法 : GET or POST 範例 1. 文字欄位 Text box
Selenium 一个用于Web应用程序测试的工具 Robin Ren
CSS 徐于晉 陳政樺 陳郁蘋 黃麒錕 劉芳賓.
第 3 章 網頁的基本設定與預覽.
程式設計實作.
第四章 網頁表單與資料傳遞.
网络协会2017培训 恶补Web知识训练营 2017/4/7 – Payne.
Ajax编程技术 第一章 Ajax简介.
数据库操作示例 import java.sql.*; //导入java.sql包 public class JDBCDemo {
HTML 5與課程簡介 靜宜大學 資管系 楊子青.
2018/11/20 第一章 Java概述 武汉大学计算机学院计算机应用系 2018/11/20 14:33.
JavaScript 语言3 学习网站:心蕊设计
本單元介紹何謂變數,及說明變數的宣告方式。
程式設計實作.
Web前端开发技术与实践 第3章:初识HTML5 阮晓龙 /
JavaScript 靜宜大學 資管系 楊子青.
基于Photoshop插件的图标管理 -- 让工具来解放我们的双手 By 黎嘉尧 商品展示组.
C/C++/Java 哪些值不是头等程序对象
多浏览器兼容性测试工具 XBrowser剖析
网站设计 前端 选择器(复习),表单.
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
第2章 初识Dreamweaver CS4 Adobe Dreamweaver CS4是建立Web站点和应用程序的 专业工具。它将可视布局工具、应用程序开发功能和 代码编辑支持组合在一起,其功能强大,使得各个层 次的开发人员和设计人员都能够快速创建界面吸引人 的基于标准的网站和应用程序。从对基于CSS的设计.
架站實做—AppServ
网页设计与制作教程第5版 机械工业出版社同名教材 配套电子教案.
A New Kind of JavaScript Library
HTML 5與課程簡介 靜宜大學 資管系 楊子青.
辅导课程八.
第三章 HTML相关技术基础知识 纵观各种动态页面开发技术,无论是JSP、ASP还是PHP都无 法摆脱HTML的影子。这些动态的页面开发技术无非是在静 态HTML页面的基础上添加了动态的可以交互的内容。HTML 是所有动态页面开发技术的基础。在接下来的章节将要详 细介绍的就是HTML相关的一系列技术,包括HTML、
Ajax编程技术 第六章 调试与错误处理.
JQuery基礎與動畫、特效 靜宜大學 資管系 楊子青.
Ch09 在網頁之間傳遞資訊 網頁程式設計.
主讲:陶建平 华中科技大学网络与计算中心
JavaScript Sunxiaoshen.
武汉纺织大学传媒学院 cm.wtu.edu.cn
第十二章 学习使用Ant Apache Ant是一个基于Java的构建工具,它可以 会构建多种项目,但是目前主要被用于Java项目 的构建, Ant是用Java语言编写,可以在多个操 作系统中运行,目前在绝大部分的Java开源项目 中,都选择使用Ant作为构建项目的工具,Ant已 经成为Java开源项目构建的事实标准,而且越来.
网页设计与制作 Jiangxi Engineering Vocational College 信息工程系 徐卫红.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
主编:钟元生 赵圣鲁.
网 站 设 计 与 建 设 Website design and developments
第二章 Java基本语法 讲师:复凡.
辅导课程十二.
FrontPage 2000.
JAVA 程式設計與資料結構 第三章 物件的設計.
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
JavaScript 教师:魏小迪
知识点讲解 1、DOM节点树 DOM(Document Object Model)称为文档对象模型,是一个表示和处理文 档的应用程序接口(API),可用于动态访问、更新文档的内容、结构和样 式。DOM将网页中文档的对象关系规划为节点层级,构成它们之间的等级关 系,这种各对象间的层次结构被称为节点树。如下图所示。
表单页面 表单是用户利用浏览器对Web站点网络数据库进行查询的一种界面,用户利用表单可以输入信息或选择选项等,然后将这些信息提交给服务器进行处理。通过表单,既可以将浏览器的信息发送到Internet服务器上,同时表单也可以使用户与站点的浏览者交互或从浏览者那里收集信息。它是网页的设计者和使用者相互交流的工具。表单对象包括文本域(单行、多行、密码)、列表、菜单、复选框、单选框、按钮等。
教师:李金双 网页制作 教师:李金双
Presentation transcript:

Selenium经典教程 selenium教程

Selenium的简介 Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE、Mozilla Firefox、Mozilla Suite等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建衰退测试检验软件功能和用户需求。支持自动录制动作和自动生成。Net、Java、Perl等不同语言的测试脚本。Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。 2018/11/9 11/9/2018

selenium的优势 Selenium 测试直接在浏览器中运行,就像真实用户所做的一样。Selenium 测试可以在 Windows、Linux 和 Macintosh上的 Internet Explorer、Mozilla 和 Firefox 中运行。其他测试工具都不能覆盖如此多的平台。使用 Selenium 和在浏览器中运行测试还有很多其他好处。下面是主要的两大好处:   通过编写模仿用户操作的 Selenium 测试脚本,可以从终端用户的角度来测试应用程序。通过在不同浏览器中测试,更容易发现浏览器的不兼容性。Selenium 的核心,也称 browser bot,是用 JavaScript 编写的。这使得测试脚本可以在受支持的浏览器中运行。browser bot 负责执行从测试脚本接收到的命令,测试脚本要么是用 HTML 的表布局编写的,要么是使用一种受支持的编程语言编写的。 2018/11/9 11/9/2018

selenium支持的浏览器 2018/11/9 11/9/2018

selenium的组件 # Selenium IDE:一个Firefox插件,可以录制用户的基本操作,生成测试用例。随后可以运行这些测试用例在浏览器里回放,可将测试用例转换为其他语言的自动化脚本。   # Selenium Remote Control (RC) :支持多种平台(Windows,Linux,Solaris)和多种浏览器(IE,Firefox,Opera,Safari),可以用多种语言(Java,Ruby,Python,Perl,PHP,C#)编写测试用例。    # Selenium Grid :允许Selenium-RC 针对规模庞大的测试案例集或者需要在不同环境中运行的测试案例集进行扩展。 2018/11/9 11/9/2018

selenium1VSselenium2 Selenium1.0不能处理一下事件: 1) 本机键盘和鼠标事件 2) 同源策略XSS/HTTP(S) 3) 弹出框,对话框(基本身份认证,自签名的证书和文件上传/下载)   Selenium2.0有简洁的API,WebDriver和WebElement对象,更好的抽象。且支持多中操作系统,多语言,多浏览器。   同时Selenium2.0进行了架构的调整和升级:   Selenium2.0 = Selenium1.0 + WebDriver(也就是说Selenium2.0合并了这两个项目) 2018/11/9 11/9/2018

WebDriver的一个小例子 访问it168的一个例子: package webdriver; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class FirstCase { public static void main(String[] args) throws InterruptedException { WebDriver driver = new FirefoxDriver(); driver.get("http://it168.com"); Thread.sleep(3000); driver.close(); } 2018/11/9 11/9/2018

定位元素 WebDriver可以通过WebDriver实例来定位元素,任何语言库都含有“Find Element”和“Find Elements”的方法。第一个方法返回一个WebElement或者抛出异常。后者返回所有WebElement的列表,或者空列表。 获取和定位元素我们调用“By”方法。下面具体解释下“By”方法: By ID 这是一个极为有效定位元素的方法。普遍的现状是UI工程师在实际编写页面时很少写id或者自动生产一个ID,这些都是需要避免的。对于一个页面Element来说,class比自动生产的id更好。 通过id定位元素的例子: <div id="coolestWidgetEvah">...</div> WebElement element = driver.findElement(By.id("coolestWidgetEvah")); 2018/11/9 11/9/2018

定位元素 By Class Name 这里的class指的是DOM中的元素,在实际使用过程中,我们也会发现很多DOM元素含有相同的class名。 通过class name定位元素例子: <div class="cheese"><span>Cheddar</span></div> <div class="cheese"><span>Gouda</span></div> List<WebElement> cheeses = driver.findElements(By.className("cheese")); 2018/11/9 11/9/2018

元素定位 By Tag Name DOM的Tag元素 用Tag name 定位元素的例子: <iframe src="..."></iframe> WebElement frame = driver.findElement(By.tagName("iframe")); 2018/11/9 11/9/2018

元素定位 By Name 例子: <input name="cheese" type="text"/> WebElement cheese = driver.findElement(By.name("cheese")); By Link Text <a href="http://www.google.com/search?q=cheese">cheese</a> WebElement cheese = driver.findElement(By.linkText("cheese")); 2018/11/9 11/9/2018

元素定位 By CSS 从名字上看,这是根据CSS来定位元素。 例子: <div id="food"> <span class="dairy">milk</span> <span class="dairy aged">cheese</span> </div> WebElement cheese = driver.findElement(By.cssSelector("#food span.dairy aged")); 2018/11/9 11/9/2018

元素定位 By XPATH 在高级的水平下,WebDriver尽可能使用浏览器的原生的XPath能力。在那些没有原生的XPath支持的浏览器,我们提供自己的实现方式。但是三个Driver有一定的区别。 <input type="text" name="example" /> <INPUT type="text" name="other" /> List<WebElement> inputs = driver.findElements(By.xpath("//input")); 2018/11/9 11/9/2018

元素定位 使用javascript 您可以执行任意JavaScript找到一个元素,只要你返回一个DOM元素,它会自动转换到一个WebElement对象。 例子: jQuery的页面加载一个简单的例子: WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('.cheese')[0]"); 寻求所有的页面上的input元素: List<WebElement> labels = driver.findElements(By.tagName("label"));List<WebElement> inputs = (List<WebElement>) ((JavascriptExecutor)driver).executeScript( "var labels = arguments[0], inputs = []; for (var i=0; i < labels.length; i++){" +"inputs.push(document.getElementById(labels[i].getAttribute('for'))); } return inputs;", labels); 2018/11/9 11/9/2018

select标签操作 遍历select标签 WebElement select = driver.findElement(By.tagName("select")); List<WebElement> allOptions = select.findElements(By.tagName("option")); for (WebElement option : allOptions) { System.out.println(String.format("Value is: %s", option.getAttribute("value"))); option.click();} 选择某一个选项: Select select = new Select(driver.findElement(By.tagName("select"))); select.deselectAll(); select.selectByVisibleText("Edam"); 2018/11/9 11/9/2018

上传文件 WebElement FileUpload =driver.findElement(By.id("upload")); String filePath = "C:\test\\uploadfile\\media_ads\\test.jpg"; FileUpload.sendKeys(filePath); 2018/11/9 11/9/2018

提交 Submit在form中 driver.findElement(By.id("submit")).click(); WebElement.submit(); 建议使用第一种方式,出错的几率比较小,并且比较直观 2018/11/9 11/9/2018

拖拽操作 WebElement element = driver.findElement(By.name("source")); WebElement target = driver.findElement(By.name("target")); (new Actions(driver)).dragAndDrop(element, target).perform(); 2018/11/9 11/9/2018

window和frame的切换 Windows和Frames之间的切换 一些web应用程序有许多Frames或多个Windows。 WebDriver支持使用“switchTo”的方法实现的窗口之间切换。 driver.switchTo().window("windowName"); 所有对driver的调用都会指向特定的窗口,但是我们怎么知道窗口的名字呢?我们可以查看javascript代码和打开他的链接: <a href="somewhere.html" target="windowName">Click here to open a new window</a> 另外,还可以通过“window handle”去调用“switchTo().window()”, 通过这个,我们就遍历来找到所有打开的窗口: for (String handle : driver.getWindowHandles()) { driver.switchTo().window(handle); } 2018/11/9 11/9/2018

frame和window的切换 Switch同样支持frame: driver.switchTo().frame("frameName");同样可以使用他访问subframe,找frameName的第一个subframe中叫做child的frame: driver.switchTo().frame("frameName.0.child"); 2018/11/9 11/9/2018

弹出框 从selenium2.0开始,已经支持对弹出框的获取 Alert alert = driver.switchTo().alert(); 这个方法会返回当前被打开打警告框,你可以进行统一,取消,读取提示内容,后则进入到提示,这个同样使用alerts,confirms,prompts。 2018/11/9 11/9/2018

一些浏览器的自身操作 Navigation:History and Location 之前我们就可以通过get方法来打开一个网页,像我们所看到的,WebDriver同样还有许多小接口,Navigation就是其中一个小接口: driver.navigate().to("http://www.example.com"); navigate().to和get()其实作用是一样的,但是navigate还可以进行浏览器的前进后退操作: driver.navigate().forward(); driver.navigate().back(); 2018/11/9 11/9/2018

Webdriver鼠标动作的操作 在前面的例子中已经出现过鼠标的操作了,就是拖拽,但是鼠标动作有很多,比如双击,单击右键等。操作类在API中是Actions的类,具体的实现见例子: WedDriver driver = new FirefoxDriver(); Actions action = new Actions(driver); 这个时候可以调用action来进行各种操作。 Action.doubleClick();//双击左键 具体的例子可以参考selenium的API 2018/11/9 11/9/2018

WebDriver中调用javascript 有一些在页面的东西可能运用webdriver的API不好解决,这个时候我们可以调用javascript来解析DOM。所有的webdriver的实现类都继承了JavascriptExecutor的接口。 下面一个运行javascript的例子: WebDriver driver = new FirefoxDriver(); String js=“alert('Hello')”; (javascriptExecutor)driver.executeScript(js); 这个例子就会执行alert。 因为针对前端,jquery比较流行,所以我们希望能够使用jquery,下面介绍一下使用jquery的例子。 2018/11/9 11/9/2018

WebDriver中使用jquery 假如设定jquery包的路径为path,则程序如下: String jquery=null; FileInputStream input = new FileInputStream(new File(path)); While((context=input.readlines())!=null){ Jquery=jquery+context; } FirefoxDriver driver =new FirefoxDriver(); String js=“”//此处输入你要查找的jquery的代码 //这种方式其实就是读取jquery库的内容,然后全部加载执行 Driver.executeScript(jquery+js); 2018/11/9 11/9/2018

WebDriver的设计模式 针对小型的页面来做自动化的话,可以很简单的去编写测试用例,但是当涉及的页面比较多的话就会有很多的代码要写,如果找个一元素无限制的被复用,对于程序员来讲是一件很恼火的事情,所以在编写测试脚本的时候我们一般会借助一些设计模式。Webdriver自身带有一个pageobject的模式,下面看一个163发邮件的例子,可以算是一个比较简单的pageObject的例子。 2018/11/9 11/9/2018

WebDriver的实例1: 2018/11/9 11/9/2018

WebDriver实例1: 2018/11/9 11/9/2018

WebDriver实例1: 2018/11/9 11/9/2018

WebDriver基于IT168的例子 2018/11/9 11/9/2018

WebDriver实例2: 2018/11/9 11/9/2018