Selenium经典教程

上传人:M****1 文档编号:590277420 上传时间:2024-09-13 格式:PPT 页数:31 大小:608.50KB
返回 下载 相关 举报
Selenium经典教程_第1页
第1页 / 共31页
Selenium经典教程_第2页
第2页 / 共31页
Selenium经典教程_第3页
第3页 / 共31页
Selenium经典教程_第4页
第4页 / 共31页
Selenium经典教程_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《Selenium经典教程》由会员分享,可在线阅读,更多相关《Selenium经典教程(31页珍藏版)》请在金锄头文库上搜索。

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

2、序编写的一个验收测试工具。2024/9/139/13/2024selenium的优势的优势nSelenium 测试直接在浏览器中运行,就像真实用户所做的一样。Selenium 测试可以在 Windows、Linux 和 Macintosh上的 Internet Explorer、Mozilla 和 Firefox 中运行。其他测试工具都不能覆盖如此多的平台。使用 Selenium 和在浏览器中运行测试还有很多其他好处。下面是主要的两大好处: 通过编写模仿用户操作的 Selenium 测试脚本,可以从终端用户的角度来测试应用程序。通过在不同浏览器中测试,更容易发现浏览器的不兼容性。Seleniu

3、m 的核心,也称 browser bot,是用 JavaScript 编写的。这使得测试脚本可以在受支持的浏览器中运行。browser bot 负责执行从测试脚本接收到的命令,测试脚本要么是用 HTML 的表布局编写的,要么是使用一种受支持的编程语言编写的。2024/9/139/13/2024selenium支持的浏览器支持的浏览器2024/9/139/13/2024selenium的组件的组件n# Selenium IDE:一个Firefox插件,可以录制用户的基本操作,生成测试用例。随后可以运行这些测试用例在浏览器里回放,可将测试用例转换为其他语言的自动化脚本。 # Selenium Re

4、mote Control (RC) :支持多种平台(Windows,Linux,Solaris)和多种浏览器(IE,Firefox,Opera,Safari),可以用多种语言(Java,Ruby,Python,Perl,PHP,C#)编写测试用例。 n# Selenium Grid :允许Selenium-RC 针对规模庞大的测试案例集或者需要在不同环境中运行的测试案例集进行扩展。2024/9/139/13/2024selenium1VSselenium2nSelenium1.0不能处理一下事件:n1) 本机键盘和鼠标事件n2) 同源策略XSS/HTTP(S)n3) 弹出框,对话框(基本身份认

5、证,自签名的证书和文件上传/下载)nSelenium2.0有简洁的API,WebDriver和WebElement对象,更好的抽象。且支持多中操作系统,多语言,多浏览器。n同时Selenium2.0进行了架构的调整和升级:nSelenium2.0 = Selenium1.0 + WebDriver(也就是说Selenium2.0合并了这两个项目)2024/9/139/13/2024WebDriver的一个小例子的一个小例子n访问it168的一个例子:npackage webdriver;nimport org.openqa.selenium.WebDriver;nimport org.open

6、qa.selenium.firefox.FirefoxDriver;npublic class FirstCase npublic static void main(String args) throws InterruptedException nWebDriver driver = new FirefoxDriver();ndriver.get(http:/);nThread.sleep(3000);ndriver.close();nn2024/9/139/13/2024定位元素定位元素nWebDriver可以通过WebDriver实例来定位元素,任何语言库都含有“Find Element

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

8、/2024定位元素定位元素n By Class Namen 这里的class指的是DOM中的元素,在实际使用过程中,我们也会发现很多DOM元素含有相同的class名。n通过class name定位元素例子:nCheddarnGoudanList cheeses = driver.findElements(By.className(cheese);2024/9/139/13/2024元素定位元素定位nBy Tag NamenDOM的Tag元素n用Tag name 定位元素的例子:nnWebElement frame = driver.findElement(By.tagName(iframe);

9、2024/9/139/13/2024元素定位元素定位nBy Namen例子:nnWebElement cheese = driver.findElement(By.name(cheese);nBy Link Textn例子:ncheesenWebElement cheese = driver.findElement(By.linkText(cheese);2024/9/139/13/2024元素定位元素定位nBy CSSn从名字上看,这是根据CSS来定位元素。n例子:n nmilk n cheesennWebElement cheese = driver.findElement(By.cssS

10、elector(#food span.dairy aged);2024/9/139/13/2024元素定位元素定位nBy XPATHn在高级的水平下,WebDriver尽可能使用浏览器的原生的XPath能力。在那些没有原生的XPath支持的浏览器,我们提供自己的实现方式。但是三个Driver有一定的区别。n n n List inputs = driver.findElements(By.xpath(/input); 2024/9/139/13/2024元素定位元素定位n使用javascriptn您可以执行任意JavaScript找到一个元素,只要你返回一个DOM元素,它会自动转换到一个Web

11、Element对象。n例子:njQuery的页面加载一个简单的例子:nWebElement element = (WebElement) (JavascriptExecutor)driver).executeScript(return $(.cheese)0); n寻求所有的页面上的input元素:nList labels = driver.findElements(By.tagName(label);List inputs = (List) (JavascriptExecutor)driver).executeScript( var labels = arguments0, inputs =

12、 ; for (var i=0; i labels.length; i+) +inputs.push(document.getElementById(labelsi.getAttribute(for); return inputs;, labels);2024/9/139/13/2024select标签操作标签操作n遍历select标签nWebElement select = driver.findElement(By.tagName(select);nList allOptions = select.findElements(By.tagName(option);nfor (WebEleme

13、nt option : allOptions) System.out.println(String.format(Value is: %s,noption.getAttribute(value); n option.click();n选择某一个选项:nSelect select = new Select(driver.findElement(By.tagName(select);nselect.deselectAll();nselect.selectByVisibleText(Edam);2024/9/139/13/2024上传文件上传文件nWebElement FileUpload =dri

14、ver.findElement(By.id(upload);nString filePath = C:testuploadfilemedia_adstest.jpg;nFileUpload.sendKeys(filePath);2024/9/139/13/2024提交提交nSubmit在form中 ndriver.findElement(By.id(submit).click();nsubmit不在form中 nWebElement.submit();n建议使用第一种方式,出错的几率比较小,并且比较直观2024/9/139/13/2024拖拽操作拖拽操作nWebElement element

15、= driver.findElement(By.name(source);nWebElement target = driver.findElement(By.name(target);n(new Actions(driver).dragAndDrop(element, target).perform();2024/9/139/13/2024window和和frame的切换的切换nWindows和Frames之间的切换n一些web应用程序有许多Frames或多个Windows。 WebDriver支持使用“switchTo”的方法实现的窗口之间切换。ndriver.switchTo().win

16、dow(windowName);n所有对driver的调用都会指向特定的窗口,但是我们怎么知道窗口的名字呢?我们可以查看javascript代码和打开他的链接:nClick here to open a new windown另外,还可以通过“window handle”去调用“switchTo().window()”,n通过这个,我们就遍历来找到所有打开的窗口:nfor (String handle : driver.getWindowHandles() driver.switchTo().window(handle); 2024/9/139/13/2024frame和和window的切换的

17、切换nSwitch同样支持frame:ndriver.switchTo().frame(frameName);同样可以使用他访问subframe,找frameName的第一个subframe中叫做child的frame:ndriver.switchTo().frame(frameName.0.child);2024/9/139/13/2024弹出框弹出框n从selenium2.0开始,已经支持对弹出框的获取nAlert alert = driver.switchTo().alert();n这个方法会返回当前被打开打警告框,你可以进行统一,取消,读取提示内容,后则进入到提示,这个同样使用aler

18、ts,confirms,prompts。2024/9/139/13/2024一些浏览器的自身操作一些浏览器的自身操作nNavigation:History and Locationn之前我们就可以通过get方法来打开一个网页,像我们所看到的,WebDriver同样还有许多小接口,Navigation就是其中一个小接口:ndriver.navigate().to(http:/);nnavigate().to和get()其实作用是一样的,但是navigate还可以进行浏览器的前进后退操作:ndriver.navigate().forward();ndriver.navigate().back();

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

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

21、的例子。9/13/20242024/9/13WebDriver中使用中使用jqueryn假如设定jquery包的路径为path,则程序如下:nString jquery=null;nFileInputStream input = new FileInputStream(new File(path);nWhile(context=input.readlines()!=null)nJquery=jquery+context;nnFirefoxDriver driver =new FirefoxDriver();nString js=“”/此处输入你要查找的jquery的代码n/这种方式其实就是读取

22、jquery库的内容,然后全部加载执行nDriver.executeScript(jquery+js);9/13/20242024/9/13WebDriver的设计模式的设计模式n针对小型的页面来做自动化的话,可以很简单的去编写测试用例,但是当涉及的页面比较多的话就会有很多的代码要写,如果找个一元素无限制的被复用,对于程序员来讲是一件很恼火的事情,所以在编写测试脚本的时候我们一般会借助一些设计模式。Webdriver自身带有一个pageobject的模式,下面看一个163发邮件的例子,可以算是一个比较简单的pageObject的例子。9/13/20242024/9/13WebDriver的实例的实例1:9/13/20242024/9/13WebDriver实例实例1:9/13/20242024/9/13WebDriver实例实例1:9/13/20242024/9/13WebDriver基于基于IT168的例子的例子9/13/20242024/9/13WebDriver实例实例2:9/13/20242024/9/13

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号