版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Selenium经典教程selenium教程Selenium经典教程专题讲座第1页10/10/Selenium介绍Selenium是一个用于Web应用程序测试工具。Selenium测试直接运行在浏览器中,就像真正用户在操作一样。支持浏览器包含IE、Mozilla Firefox、Mozilla Suite等。这个工具主要功效包含:测试与浏览器兼容性测试你应用程序看是否能够很好得工作在不一样浏览器和操作系统之上。测试系统功效创建衰退测试检验软件功效和用户需求。支持自动录制动作和自动生成。Net、Java、Perl等不一样语言测试脚本。Selenium 是ThoughtWorks专门为Web应用程
2、序编写一个验收测试工具。/10/10Selenium经典教程专题讲座第2页10/10/selenium优势Selenium 测试直接在浏览器中运行,就像真实用户所做一样。Selenium 测试能够在 Windows、Linux 和 Macintosh上 Internet Explorer、Mozilla 和 Firefox 中运行。其它测试工具都不能覆盖如此多平台。使用 Selenium 和在浏览器中运行测试还有很多其它好处。下面是主要两大好处: 经过编写模仿用户操作 Selenium 测试脚本,能够从终端用户角度来测试应用程序。经过在不一样浏览器中测试,更轻易发觉浏览器不兼容性。Seleni
3、um 关键,也称 browser bot,是用 JavaScript 编写。这使得测试脚本能够在受支持浏览器中运行。browser bot 负责执行从测试脚本接收到命令,测试脚本要么是用 HTML 表布局编写,要么是使用一个受支持编程语言编写。/10/10Selenium经典教程专题讲座第3页10/10/selenium支持浏览器/10/10Selenium经典教程专题讲座第4页10/10/selenium组件# Selenium IDE:一个Firefox插件,能够录制用户基本操作,生成测试用例。随即能够运行这些测试用例在浏览器里回放,可将测试用例转换为其它语言自动化脚本。 # Seleni
4、um Remote Control (RC) :支持各种平台(Windows,Linux,Solaris)和各种浏览器(IE,Firefox,Opera,Safari),能够用各种语言(Java,Ruby,Python,Perl,PHP,C#)编写测试用例。 # Selenium Grid :允许Selenium-RC 针对规模庞大测试案例集或者需要在不一样环境中运行测试案例集进行扩展。/10/10Selenium经典教程专题讲座第5页10/10/selenium1VSselenium2Selenium1.0不能处理一下事件:1) 本机键盘和鼠标事件2) 同源策略XSS/HTTP(S)3) 弹
5、出框,对话框(基本身份认证,自署名证书和文件上传/下载)Selenium2.0有简练API,WebDriver和WebElement对象,更加好抽象。且支持多中操作系统,多语言,多浏览器。同时Selenium2.0进行了架构调整和升级:Selenium2.0 = Selenium1.0 + WebDriver(也就是说Selenium2.0合并了这两个项目)/10/10Selenium经典教程专题讲座第6页10/10/WebDriver一个小例子访问it168一个例子:package webdriver;import org.openqa.selenium.WebDriver;import o
6、rg.openqa.selenium.firefox.FirefoxDriver;public class FirstCase public static void main(String args) throws InterruptedException WebDriver driver = new FirefoxDriver();driver.get();Thread.sleep(3000);driver.close();/10/10Selenium经典教程专题讲座第7页10/10/定位元素WebDriver能够经过WebDriver实例来定位元素,任何语言库都含有“Find Elemen
7、t”和“Find Elements”方法。第一个方法返回一个WebElement或者抛出异常。后者返回全部WebElement列表,或者空列表。获取和定位元素我们调用“By”方法。下面详细解释下“By”方法:By ID这是一个极为有效定位元素方法。普遍现实状况是UI工程师在实际编写页面时极少写id或者自动生产一个ID,这些都是需要防止。对于一个页面Element来说,class比自动生产id更加好。经过id定位元素例子:.WebElement element = driver.findElement(By.id(coolestWidgetEvah);/10/10Selenium经典教程专题讲座
8、第8页10/10/定位元素 By Class Name 这里class指是DOM中元素,在实际使用过程中,我们也会发觉很多DOM元素含有相同class名。经过class name定位元素例子:CheddarGoudaList cheeses = driver.findElements(By.className(cheese);/10/10Selenium经典教程专题讲座第9页10/10/元素定位By Tag NameDOMTag元素用Tag name 定位元素例子:WebElement frame = driver.findElement(By.tagName(iframe);/10/10Se
9、lenium经典教程专题讲座第10页10/10/元素定位By Name例子:WebElement cheese = driver.findElement(B(cheese);By Link Text例子:cheeseWebElement cheese = driver.findElement(By.linkText(cheese);/10/10Selenium经典教程专题讲座第11页10/10/元素定位By CSS从名字上看,这是依据CSS来定位元素。例子: milk cheeseWebElement cheese = driver.findElement(By.cssSelector(#fo
10、od span.dairy aged);/10/10Selenium经典教程专题讲座第12页10/10/元素定位By XPATH在高级水平下,WebDriver尽可能使用浏览器原生XPath能力。在那些没有原生XPath支持浏览器,我们提供自己实现方式。不过三个Driver有一定区分。 List inputs = driver.findElements(By.xpath(/input); /10/10Selenium经典教程专题讲座第13页10/10/元素定位使用javascript您能够执行任意JavaScript找到一个元素,只要你返回一个DOM元素,它会自动转换到一个WebElement
11、对象。例子:jQuery页面加载一个简单例子:WebElement element = (WebElement) (JavascriptExecutor)driver).executeScript(return $(.cheese)0); 寻求全部页面上input元素:List labels = driver.findElements(By.tagName(label);List inputs = (List) (JavascriptExecutor)driver).executeScript( var labels = arguments0, inputs = ; for (var i=0;
12、 i labels.length; i+) +inputs.push(document.getElementById(labelsi.getAttribute(for); return inputs;, labels);/10/10Selenium经典教程专题讲座第14页10/10/select标签操作遍历select标签WebElement select = driver.findElement(By.tagName(select);List allOptions = select.findElements(By.tagName(option);for (WebElement option
13、: 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);/10/10Selenium经典教程专题讲座第15页10/10/上传文件WebElement FileUpload =driver.find
14、Element(By.id(upload);String filePath = C:testuploadfilemedia_adstest.jpg;FileUpload.sendKeys(filePath);/10/10Selenium经典教程专题讲座第16页10/10/提交Submit在form中 driver.findElement(By.id(submit).click();submit不在form中 WebElement.submit();提议使用第一个方式,犯错几率比较小,而且比较直观/10/10Selenium经典教程专题讲座第17页10/10/拖拽操作WebElement ele
15、ment = driver.findElement(B(source);WebElement target = driver.findElement(B(target);(new Actions(driver).dragAndDrop(element, target).perform();/10/10Selenium经典教程专题讲座第18页10/10/window和frame切换Windows和Frames之间切换一些web应用程序有许多Frames或多个Windows。 WebDriver支持使用“switchTo”方法实现窗口之间切换。driver.switchTo().window(wi
16、ndowName);全部对driver调用都会指向特定窗口,不过我们怎么知道窗口名字呢?我们能够查看javascript代码和打开他链接:Click here to open a new window另外,还能够经过“window handle”去调用“switchTo().window()”,经过这个,我们就遍从来找到全部打开窗口:for (String handle : driver.getWindowHandles() driver.switchTo().window(handle); /10/10Selenium经典教程专题讲座第19页10/10/frame和window切换Switc
17、h一样支持frame:driver.switchTo().frame(frameName);一样能够使用他访问subframe,找frameName第一个subframe中叫做childframe:driver.switchTo().frame(frameName.0.child);/10/10Selenium经典教程专题讲座第20页10/10/弹出框从selenium2.0开始,已经支持对弹出框获取Alert alert = driver.switchTo().alert();这个方法会返回当前被打开打警告框,你能够进行统一,取消,读取提醒内容,后则进入到提醒,这个一样使用alerts,co
18、nfirms,prompts。/10/10Selenium经典教程专题讲座第21页10/10/一些浏览器本身操作Navigation:History and Location之前我们就能够经过get方法来打开一个网页,像我们所看到,WebDriver一样还有许多小接口,Navigation就是其中一个小接口:driver.navigate().to();navigate().to和get()其实作用是一样,不过navigate还能够进行浏览器前进后退操作:driver.navigate().forward();driver.navigate().back(); /10/10Selenium经典
19、教程专题讲座第22页Webdriver鼠标动作操作在前面例子中已经出现过鼠标操作了,就是拖拽,不过鼠标动作有很多,比如双击,单击右键等。操作类在API中是Actions类,详细实现见例子:WedDriver driver = new FirefoxDriver();Actions action = new Actions(driver);这个时候能够调用action来进行各种操作。Action.doubleClick();/双击左键详细例子能够参考seleniumAPI10/10/10/10Selenium经典教程专题讲座第23页WebDriver中调用javascript有一些在页面东西可能
20、利用webdriverAPI不好处理,这个时候我们能够调用javascript来解析DOM。全部webdriver实现类都继承了JavascriptExecutor接口。下面一个运行javascript例子:WebDriver driver = new FirefoxDriver();String js=“alert(Hello)”; (javascriptExecutor)driver.executeScript(js);这个例子就会执行alert。因为针对前端,jquery比较流行,所以我们希望能够使用jquery,下面介绍一下使用jquery例子。10/10/10/10Selenium经典教程专题讲座第24页WebDriver中使用jquery假如设定jquery包路径为path,则程序以下:String jquery=null;FileInputStream input = new FileInputSt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业管理-财务费用报销管理制度
- 四川省成都市成都外国语校2025-2026学年第二学期开学考试初三数学试题测试2.13试题含解析
- 浙江省杭州市临安区2026年初三下学期中考试化学试题含解析
- 江苏省苏州市高新区2026届初三下学期第二次调研考试物理试题试卷含解析
- 河南省商丘综合实验中学2026年3月初三线上自我检测试题数学试题含解析
- 黑龙江省佳木斯市重点达标名校2025-2026学年初三下第七次模拟数学试题含解析
- 辽宁省辽阳市辽阳县重点中学2026届初三练习题二(全国卷II)数学试题含解析
- 面瘫的中医护理与社会支持
- 婴幼儿感冒的家庭环境消毒
- 协会经费审计制度
- 2026福建浦开集团有限公司、福建浦盛产业发展集团有限公司、福建浦丰乡村发展集团有限公司社会公开招聘补充笔试模拟试题及答案解析
- 桥牌协会内部管理制度
- 2026重庆市南岸区消防救援支队消防文员招录2人笔试备考试题及答案解析
- 2026年山东省立第三医院初级岗位公开招聘人员(27人)笔试备考试题及答案解析
- 肠道菌群移植培训课件
- T/CAPE 11005-2023光伏电站光伏组件清洗技术规范
- DB32-T 3310-2017船闸维护规程
- 新苏教版科学六年级下册全册教案(含反思)
- 世界现代化理论
- 内燃机车柴油机冷却水系统-交流传动内燃机车柴油机冷却水系统
- 化学入门-给小学生讲化学
评论
0/150
提交评论