《第7章 selenium2.0与webdriver(1)》由会员分享,可在线阅读,更多相关《第7章 selenium2.0与webdriver(1)(33页珍藏版)》请在金锄头文库上搜索。
1、第7章 Selenium2.0与WebDriver(1),林若钦,2,本章内容:,Selenium2与WebDriver的简介 什么情况下选用WebDriver webdriver对浏览器的简单操作 Webdirver对浏览器的支持 使用操作,3,1.Selenium2与WebDriver的简介,selenium2.0 = selenium1.0+ webdriver WebDriver项目是由Simon Stewart 提出的,它是一个轻便简洁的自动化测试框架。WebDriver通过尝试不同的方法去解决Selenium1.0所面临的问题。不单单是使用javascript,WebDriver会
2、使用任何一种更合适的机制来操作浏览器 通过更灵活的机制去操控浏览器,就能很好的绕过浏览器javascript的安全限制。当这些技术还不够用时,可以调用系统设备操作,尤其是当你需要一些键盘和鼠标操作时,通过这些技术,可以更好的模拟用户的真实浏览器操作。,4,2、什么情况下选用WebDriver?,(1)Selenium-1.0不支持的浏览器功能。 (2)multiple frames, multiple browser windows, popups, and alerts. (3)页面导航。 (4)下拉。 (5)基于AJAX的UI元素。,5,3.实例:,6,4 webdriver对浏览器的简单
3、操作,A)打开一个测试浏览器,7,webdriver对浏览器的简单操作,B)打开1个具体的url,import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class OpenUrl public static void main(String args) String url = “; WebDriver driver = new FirefoxDriver(); / 用get方法 /driver.get(url); / 用navigate方法,然后再调用to方
4、法 driver.navigate().to(url); ,8,webdriver对浏览器的简单操作,C)关闭浏览器,import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class CloseBrowser public static void main(String args) String url = “; WebDriver driver = new FirefoxDriver(); driver.get(url); /用quit方法 /driver.
5、quit(); /用close方法 driver.close(); ,9,webdriver对浏览器的简单操作,D)返回当前页面的url和title,public class GetUrlAndTitle public static void main(String args) String url = “; WebDriver driver = new FirefoxDriver(); driver.get(url); /得到title String title = driver.getTitle(); /得到当前页面url String currentUrl = driver.getCur
6、rentUrl(); /输出title和currenturl System.out.println(title+“n“+currentUrl); ,10,webdriver对浏览器的简单操作,E)其他方法,getWindowHandle() 返回当前的浏览器的窗口句柄 getWindowHandles() 返回当前的浏览器的所有窗口句柄 getPageSource() 返回当前页面的源码,11,4.Webdirver对浏览器的支持,4.1 HtmlUnit Driver 优点:HtmlUnit Driver不会实际打开浏览器,运行速度很快。对于用FireFox等浏览器来做测试的自动化测试用例,
7、运行速度通常很慢,HtmlUnit Driver无疑是可以很好地解决这个问题。 缺点:它对JavaScript的支持不够好,当页面上有复杂JavaScript时,经常会捕获不到页面元素。 使用: WebDriver driver = new HtmlUnitDriver();,12,4.Webdirver对浏览器的支持,2 FireFox Driver 优点:FireFox Dirver对页面的自动化测试支持得比较好,很直观地模拟页面的操作,对JavaScript的支持也非常完善,基本上页面上做的所有操作FireFox Driver都可以模拟。 缺点:启动很慢,运行也比较慢,不过,启动之后We
8、bdriver的操作速度虽然不快但还是可以接受的,建议不要频繁启停FireFox Driver。 使用: WebDriver driver = new FirefoxDriver(); Firefox profile的属性值是可以改变的,比如我们平时使用得非常频繁的改变useragent的功能,可以这样修改: FirefoxProfile profile = new FirefoxProfile();profile.setPreference(“general.useragent.override“, “some UAstring“);WebDriver driver = new Firefo
9、xDriver(profile);,13,4.Webdirver对浏览器的支持,3 InternetExplorer Driver 优点:直观地模拟用户的实际操作,对JavaScript提供完善的支持。 缺点:是所有浏览器中运行速度最慢的,并且只能在Windows下运行,对CSS以及XPATH的支持也不够好。 使用: WebDriver driver = new InternetExplorerDriver();,14,5.使用操作,5.1 如何找到页面元素 Webdriver的findElement方法可以用来找到页面的某个元素,最常用的方法是用id和name查找。下面介绍几种比较常用的方法
10、。,15,By ID,假设页面写成这样: 那么可以这样找到页面的元素: 通过id查找: WebElement element = driver.findElement(By.id(“passwd-id“);,16,例:,import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class ByUserId /* * param
11、 args */ public static void main(String args) / TODO Auto-generated method stub WebDriver dr = new FirefoxDriver(); dr.get(“); WebElement element = dr.findElement(By.id(“passport_51_user“); System.out.println(element.getAttribute(“title“); ,17,By Name,通过name查找: WebElement element = driver.findElemen
12、t(By.name(“passwd“); 例: import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.By; public class ByClassName public static void main(String args) WebDriver driver = new FirefoxDriver(); driver.get(“); WebElement e = dr.findElement(By.name(“passport_51_
13、user“); System.out.println(element.getTagName(); ,18,By XPATH,通过xpath查找: WebElement element =driver.findElement(By.xpath(“/inputid=passwd-id“);,19,By Class Name,假设页面写成这样: CheddarGouda 可以通过这样查找页面元素: Listcheeses = driver.findElements(By.className(“cheese“);,20,例:,mport org.openqa.selenium.By; import o
14、rg.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; public class ByClassName public static void main(String args) WebDriver driver = new FirefoxDriver(); driver.get(“); WebElement element = driver.findElement(By.className(“username“)
15、; System.out.println(element.getTagName(); ,21,By Link Text,假设页面元素写成这样: cheese 那么可以通过这样查找: WebElement cheese =driver.findElement(By.linkText(“cheese“);,22,5.2如何对页面元素进行操作,5.2.1 输入框(text field or textarea) 找到输入框元素: WebElement element = driver.findElement(By.id(“passwd-id“); 在输入框中输入内容: element.sendKeys
16、(“test”); 将输入框清空: element.clear(); 获取输入框的文本内容: element.getText();,23,5.2.2 下拉选择框(Select),找到下拉选择框的元素: Select select = new Select(driver.findElement(By.id(“select“); 选择对应的选择项: select.selectByVisibleText(“mediaAgencyA”); 或 select.selectByValue(“MA_ID_001”); 不选择对应的选择项: select.deselectAll(); select.deselectByValue(“MA_ID_001”); select.deselectByVisibleText(“mediaAgencyA”); 或者获取选择项的值: select.getAllS