1、3.2.10Windows 和 Frames之间的切换 83.2.11拖拉(Drag andDrop) 83.2.12导航 (Navigationand History) 83.3高级使用 93.3.1 改变user agent 93.3.2 读取Cookies 93.3.3 调用Java Script 93.3.4 Webdriver截图 103.3.5 页面等待 10第4章 RemoteWebDriver 104.1使用RemoteWebDriver 104.2SeleniumServer 114.3How to setFirefox profile using RemoteWebDriv
2、er 11第5章 封装与重用 12第6章 在selenium2.0中使用selenium1.0的API 14第1章 Webdirver基础下载selenium2.0的lib包官方UserGuide:http:/seleniumhq.org/docs/用webdriver打开一个浏览器我们常用的浏览器有firefox和IE两种,firefox是selenium支持得比较成熟的浏览器。但是做页面的测试,速度通常很慢,严重影响持续集成的速度,这个时候建议使用HtmlUnit,不过HtmlUnitDirver运行时是看不到界面的,对调试就不方便了。使用哪种浏览器,可以做成配置项,根据需要灵活配置。打开
3、firefox浏览器: /Create a newinstance of the Firefox driver WebDriver driver = newFirefoxDriver();打开IE浏览器 /Create a newinstance of the Internet Explorer driver WebDriver driver = newInternetExplorerDriver ();打开HtmlUnit浏览器 /Createa new instance of the Internet Explorer driver WebDriverdriver = new HtmlUn
4、itDriver();打开测试页面对页面对测试,首先要打开被测试页面的地址(如:),web driver 提供的get方法可以打开一个页面: / And now use thedriver to visit Google driver.get();GettingStartedpackage org.openqa.selenium.example;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.sel
5、enium.firefox.FirefoxDriver;import org.openqa.selenium.support.ui.ExpectedCondition;import org.openqa.selenium.support.ui.WebDriverWait;public class Selenium2Example public static voidmain(String args) / Create a newinstance of the Firefox driver / Notice that theremainder of the code relies on the
6、interface, / not the implementation. / And now use this tovisit Googledriver.get( / Alternatively thesame thing can be done like this / driver.navigate().to( / Find the text inputelement by its name WebElement element =driver.findElement(By.name(q); / Enter something tosearch forelement.sendKeys(Che
7、ese! / Now submit the form.WebDriver will find the form for us from the element element.submit(); / Check the title ofthe pageSystem.out.println(Page title is: + driver.getTitle(); / Googles search isrendered dynamically with JavaScript. / Wait for the pageto load, timeout after 10 seconds (newWebDr
8、iverWait(driver, 10).until(new ExpectedCondition() public Booleanapply(WebDriver d) returnd.getTitle().toLowerCase().startsWith(cheese! ); / Should see: - Google Search /Close the browser driver.quit();第2章 Webdirver对浏览器的支持HtmlUnit Driver优点:HtmlUnit Driver不会实际打开浏览器,运行速度很快。对于用FireFox等浏览器来做测试的自动化测试用例,运
9、行速度通常很慢,HtmlUnit Driver无疑是可以很好地解决这个问题。缺点:它对JavaScript的支持不够好,当页面上有复杂JavaScript时,经常会捕获不到页面元素。使用:WebDriver driver = new HtmlUnitDriver();FireFox DriverFireFox Dirver对页面的自动化测试支持得比较好,很直观地模拟页面的操作,对JavaScript的支持也非常完善,基本上页面上做的所有操作FireFox Driver都可以模拟。启动很慢,运行也比较慢,不过,启动之后Webdriver的操作速度虽然不快但还是可以接受的,建议不要频繁启停Fire
10、Fox Driver。WebDriver driver = new FirefoxDriver();Firefox profile的属性值是可以改变的,比如我们平时使用得非常频繁的改变useragent的功能,可以这样修改:FirefoxProfile profile = new FirefoxProfile();profile.setPreference(general.useragent.override, some UAstringWebDriver driver = new FirefoxDriver(profile);InternetExplorer Driver直观地模拟用户的实际
11、操作,对JavaScript提供完善的支持。是所有浏览器中运行速度最慢的,并且只能在Windows下运行,对CSS以及XPATH的支持也不够好。WebDriver driver = new InternetExplorerDriver();第3章 使用操作如何找到页面元素Webdriver的findElement方法可以用来找到页面的某个元素,最常用的方法是用id和name查找。下面介绍几种比较常用的方法。3.1.1 By ID假设页面写成这样:那么可以这样找到页面的元素:通过id查找:WebElement element = driver.findElement(By.id(3.1.2 By
12、 Name或通过name查找:WebElement element = driver.findElement(By.name(3.1.3 By XPATH或通过xpath查找:WebElement element =driver.findElement(By.xpath(/inputid=passwd-id3.1.4 By Class Namediv class=cheesespanCheddar/divdivclass=Gouda可以通过这样查找页面元素:Listcheeses = driver.findElements(By.className(3.1.5 By Link Text假设页面
13、元素写成这样:ahref=那么可以通过这样查找:WebElement cheese =driver.findElement(By.linkText(如何对页面元素进行操作找到页面元素后,怎样对页面进行操作呢?我们可以根据不同的类型的元素来进行一一说明。3.2.1 输入框(text field or textarea) 找到输入框元素:在输入框中输入内容:element.sendKeys(“test”);将输入框清空:element.clear();获取输入框的文本内容:element.getText();3.2.2 下拉选择框(Select)找到下拉选择框的元素:Select select =
14、 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.getAllSelectedOptions();select.getFirs
15、tSelectedOption();3.2.3 单选项(Radio Button)找到单选框元素:WebElement bookMode =driver.findElement(By.id(BookMode选择某个单选项:bookMode.click();清空某个单选项:bookMode.clear();判断某个单选项是否已经被选择:bookMode.isSelected();3.2.4 多选项(checkbox)多选项的操作和单选的差不多:WebElement checkbox =driver.findElement(By.id(myCheckbox.checkbox.click();che
16、ckbox.clear();checkbox.isSelected();checkbox.isEnabled();3.2.5 按钮(button)找到按钮元素:WebElement saveButton = driver.findElement(By.id(save点击按钮:saveButton.click();判断按钮是否enable:saveButton.isEnabled ();3.2.6 左右选择框也就是左边是可供选择项,选择后移动到右边的框中,反之亦然。例如:Select lang = new Select(driver.findElement(By.id(languageslang
17、.selectByVisibleText(“English”);WebElement addLanguage =driver.findElement(By.id(addButtonaddLanguage.click();3.2.7 弹出对话框(Popup dialogs)Alert alert = driver.switchTo().alert();alert.accept();alert.dismiss();alert.getText();3.2.8 表单(Form)Form中的元素的操作和其它的元素操作一样,对元素操作完成后对表单的提交可以:WebElement approve = dri
18、ver.findElement(By.id(approveapprove.click();approve.submit();/只适合于表单的提交3.2.9 上传文件 (Upload File)上传文件的元素操作:WebElement adFileUpload = driver.findElement(By.id(WAP-uploadString filePath = C:testuploadfilemedia_adstest.jpg;adFileUpload.sendKeys(filePath);Windows 和 Frames之间的切换一般来说,登录后建议是先:driver.switchTo
19、().defaultContent();切换到某个frame:driver.switchTo().frame(leftFrame从一个frame切换到另一个frame:mainFrame切换到某个window:driver.switchTo().window(windowName拖拉(Drag andDrop)WebElement element =driver.findElement(By.name(sourceWebElement target = driver.findElement(By.name(target(new Actions(driver).dragAndDrop(eleme
20、nt, target).perform();导航 (Navigationand History)打开一个新的页面:driver.navigate().to(通过历史导航返回原页面:driver.navigate().forward();driver.navigate().back();高级使用3.3.1 改变user agentUser Agent的设置是平时使用得比较多的操作:profile.addAdditionalPreference(,some UA string3.3.2 读取Cookies我们经常要对的值进行读取和设置。增加cookie:/ Now set the cookie.
21、This ones valid for the entire domainCookie cookie = new Cookie(keyvaluedriver.manage().addCookie(cookie);获取cookie的值:/ And now output all the available cookies for the current URLSet allCookies = driver.manage().getCookies();for (Cookie loadedCookie : allCookies) System.out.println(String.format(%s
22、- %s,loadedCookie.getName(), loadedCookie.getValue();根据某个cookie的name获取cookie的值:driver.manage().getCookieNamed(mmsid删除cookie:/ You can delete cookies in 3 ways/ By namedriver.manage().deleteCookieNamed(CookieName/ By Cookiedriver.manage().deleteCookie(loadedCookie);/ Or all of themdriver.manage().del
23、eteAllCookies();3.3.3 调用Java ScriptWeb driver对Java Script的调用是通过JavascriptExecutor来实现的,例如:JavascriptExecutor js = (JavascriptExecutor) driver;js.executeScript(function()inventoryGridMgr.setTableFieldValue(+ inventoryId + , + fieldName + + value + )()3.3.4 Webdriver截图如果用webdriver截图是:driver = webdriver
24、.Firefox()driver.save_screenshot(error.jpg)3.3.5 页面等待因为Load页面需要一段时间,如果页面还没加载完就查找元素,必然是查找不到的。最好的方式,就是设置一个默认等待时间,在查找页面元素的时候如果找不到就等待一段时间再找,直到超时。Webdriver提供两种方法,一种是显性等待,另一种是隐性等待。显性等待:WebDriver driver =new FirefoxDriver();/somedomain/url_that_delays_loadingWebElement myDynamicElement = (new WebDriverWait(driver, 10) .until(new ExpectedCondition() Override public WebElement apply(WebDriver d) returnd.findElement(By.id(myDynamicElement );隐性等待:driver.ma
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1