乙醇老師的力作57頁詳細講解—webdriver實用指南java版本_第1頁
乙醇老師的力作57頁詳細講解—webdriver實用指南java版本_第2頁
乙醇老師的力作57頁詳細講解—webdriver實用指南java版本_第3頁
乙醇老師的力作57頁詳細講解—webdriver實用指南java版本_第4頁
乙醇老師的力作57頁詳細講解—webdriver實用指南java版本_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、webdriver有用指南java版本名目如下啟動掃瞄器場景在用法webdriver進行測試時啟動掃瞄器無疑是必需的前置工作。代碼 import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class StartBrowser public static void main(String args) WebDriver dr = new ChromeDriver(); 關(guān)閉掃瞄器場景在腳本運行完畢或者測試代碼結(jié)束的時候關(guān)閉掃瞄器是格外自然的事情,就像在吃完飯后就把餐桌

2、整理潔凈一樣。關(guān)閉掃瞄器有兩種方式:close方法quit方法close方法關(guān)閉當前的掃瞄器窗口,quit方法不僅關(guān)閉窗口,還會徹底的退出webdriver,釋放與driver server之間的連接。所以簡潔來說quit是更加徹底的close,quit會更好的釋放資源,適合強迫癥和完善主義者。代碼 import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class CloseBrowser public static void main(String args)

3、WebDriver dr = new ChromeDriver(); System.out.println(browser will be closed); dr.quit(); System.out.println(browser is closed); 掃瞄器最大化場景當我們在測試中用法一些基于圖像和坐標的掛念測試工具時,我們就會需要使掃瞄器在每次測試時保存最大化,以便在同一辨別率下進行圖像比對和坐標點選。舉例來說,假如在webdriver測試中用法了sikuli來對flash插件進行操作的話,把掃瞄器最大化無疑是一個比較簡潔的保證辨別率統(tǒng)一的解決方案。代碼 import org.open

4、qa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class Maximize public static void main(String args) throws InterruptedException WebDriver dr = new ChromeDriver(); Thread.sleep(2000); System.out.println(maximize browser); dr.manage().window().maximize(); Thread.sleep(200

5、0); System.out.println(browser will be close); dr.quit(); 設(shè)置掃瞄器大小場景設(shè)置掃瞄器窗口的大小有下面兩個比較常見的用途:在統(tǒng)一的掃瞄器大小下運行用例,可以比較簡潔的跟一些基于圖像比對的工具進行結(jié)合,提升測試的機敏性及普遍適用性。比如可以跟sikuli結(jié)合,用法sikuli操作flash;在不同的掃瞄器大小下訪問測試站點,對測試頁面截圖并保存,然后觀看或用法圖像比對工具對被測頁面的前端樣式進行評測。比如可以將掃瞄器設(shè)置成移動端大小(320 x480),然后訪問移動站點,對其樣式進行評估;代碼將掃瞄器調(diào)整成移動端大小,然后訪問移動站點,對

6、移動站點的樣式進行評估。 import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class CloseBrowser public static void main(String args) WebDriver dr = new ChromeDriver();dr.manager().Window().setSize(newDimension(600,800) System.out.println(browser will be closed); dr.quit(

7、); System.out.println(browser is closed); 爭辯webdriver供應了很多調(diào)整掃瞄器窗口的接口,比如move_to(移動窗口),position(設(shè)置或獵取掃瞄器的位置)。在一般狀況下這些功能并不常用。訪問鏈接情景web UI測試里最簡潔也是最基本的事情就是訪問1個鏈接了。webdriver的api里有2種訪問url的方式,分別是get和navigate.to方法。一般狀況下建議用法get,由于其字母比較少,不太簡潔出錯。代碼 import org.openqa.selenium.WebDriver; import org.openqa.seleniu

8、m.chrome.ChromeDriver; public class Get public static void main(String args) throws InterruptedException WebDriver dr = new ChromeDriver(); Thread.sleep(2000); String url = ; System.out.printf(now accesss %s n, url); dr.get(url); Thread.sleep(2000); System.out.println(browser will be close); dr.quit

9、(); 爭辯navigate方法實際上會產(chǎn)生1個Navigator對象,其封裝了與導航相關(guān)的一些方法,比如前進后退等。打印當前頁面的title及url情景測試中,訪問1個頁面然后推斷其title是否符合預期是很常見的1個用例,所謂用例不夠,title來湊就是這個道理。更具體一點,假設(shè)1個頁面的title應當是hello world, 那么可以寫這樣的一個用例:訪問該頁面,獵取該頁面的title,推斷獵取的值是否等于hello world。獵取當前頁面的url也是格外重要的一個操作。在某些狀況下,你訪問一個url,這時系統(tǒng)會自動對這個url進行跳轉(zhuǎn),這就是所謂的重定向。一般測試重定向的方法是訪問

10、這個url,然后等待頁面重定向完畢之后,獵取當前頁面的url,推斷該url是否符合預期。另外的一個常見的測試場景是提交了一個表單,假如表單內(nèi)容通過了驗證,那么則會跳轉(zhuǎn)到一個新頁面,假如未通過驗證,則會停留在當前頁面,此時獵取當前頁面的url則可以憂慮我們推斷表單提交的跳轉(zhuǎn)是否符合預期。更具體一點,假如你在測試一個登陸頁面,輸入正確的登陸信息后,會跳轉(zhuǎn)到系統(tǒng)首頁。獵取跳轉(zhuǎn)后的url然后推斷其是否與系統(tǒng)首頁的url相符將是一個很不錯的用例。代碼 import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.Chrom

11、eDriver; public class TitleAndUrl public static void main(String args) throws InterruptedException WebDriver dr = new ChromeDriver(); Thread.sleep(2000); String url = ; System.out.printf(now accesss %s n, url); dr.get(url); Thread.sleep(2000); System.out.printf(title of current page is %sn, dr.getTi

12、tle(); System.out.printf(url of current page is %sn, dr.getCurrentUrl(); System.out.println(browser will be close); dr.quit(); 前進和后退場景說實話,這兩個功能一般不太常用。所能想到的場景或許也就是在幾個頁面間來回跳轉(zhuǎn),省去每次都get url。代碼 import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class ForwardAndBa

13、ck public static void main(String args) throws InterruptedException WebDriver dr = new ChromeDriver(); Thread.sleep(2000); String firstUrl = ; System.out.printf(now accesss %s n, firstUrl); dr.get(firstUrl); Thread.sleep(1000); String secondUrl = ; System.out.printf(now accesss %s n, secondUrl); dr.

14、get(secondUrl); Thread.sleep(1000); System.out.printf(now back to %s n, firstUrl); dr.navigate().back(); Thread.sleep(1000); System.out.printf(forward to %s n, secondUrl); dr.navigate().forward(); Thread.sleep(1000); System.out.println(browser will be close); dr.quit(); 簡潔的對象定位場景測試對象的定位和操作是webdriver

15、的核心內(nèi)容,其中操作又是建立在定位的基礎(chǔ)之上,因此對象定位就更加顯得重要了。定位對象的目的一般有下面幾種操作對象獲得對象的屬性,如獲得測試對象的class屬性,name屬性等等獲得對象的text獲得對象的數(shù)量webdriver供應了一系列的對象定位方法,常用的有以下幾種idnameclass namelink textpartial link texttag namexpathcss selector代碼html代碼 form.html Form simple login form Email Password Remember me Sign in register java代碼 simpl

16、e_locate.java import java.io.File; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.JavascriptExecutor; public class SimpleLocate public static void main(String args)

17、 throws InterruptedException WebDriver dr = new ChromeDriver(); File file = new File(src/form.html); String filePath = file:/ + file.getAbsolutePath(); System.out.printf(now accesss %s n, filePath); dr.get(filePath); Thread.sleep(2000); / by id dr.findElement(By.id(inputEmail).click(); Thread.sleep(

18、1000); / by name dr.findElement(B(password); Thread.sleep(1000); / by tagname String classOfForm = dr.findElement(By.tagName(form).getAttribute(class); System.out.printf(%sn, classOfForm); Thread.sleep(1000); / by link text WebElement link = dr.findElement(By.linkText(register); (JavascriptExecutor)

19、dr).executeScript($(arguments0).fadeOut().fadeIn(), link); Thread.sleep(1000); / by partial link test WebElement sameLink = dr.findElement(By.partialLinkText(reg); (JavascriptExecutor)dr).executeScript($(arguments0).fadeOut().fadeIn(), sameLink); Thread.sleep(1000); / by css selector WebElement div

20、= dr.findElement(By.cssSelector(.controls); (JavascriptExecutor)dr).executeScript($(arguments0).fadeOut().fadeIn(), div); Thread.sleep(1000); / by xpath dr.findElement(By.xpath(/html/body/form/div3/div/label/input).click(); Thread.sleep(1000); System.out.println(browser will be close); dr.quit(); 爭辯

21、上面例子里由于html文件中引用了jquery,所以在執(zhí)行js時可以用法jquery的$()及fadeIn()等方法。假如你測試的頁面沒用包含jquery的話,這些方法是無效的。定位一組對象場景從上一節(jié)的例子中可以看出,webdriver可以很便利的用法findElement方法來定位某個特定的對象,不過有時候我們卻需要定位一組對象,這時候就需要用法findElements方法。定位一組對象一般用于以下場景:批量操作對象,比如將頁面上全部的checkbox都勾上先獵取一組對象,再在這組對象中過濾出需要具體定位的一些對象。比如定位出頁面上全部的checkbox,然后選擇最終一個代碼checkbo

22、x.html Checkbox checkbox checkbox1 checkbox2 checkbox3 radio find_element.java import java.io.File; import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.sel

23、enium.JavascriptExecutor; public class SimpleLocate public static void main(String args) throws InterruptedException WebDriver dr = new ChromeDriver(); File file = new File(src/checkbox.html); String filePath = file:/ + file.getAbsolutePath(); System.out.printf(now accesss %s n, filePath); dr.get(fi

24、lePath); Thread.sleep(1000); / 選擇全部的checkbox并全部勾上 List checkboxes = dr.findElements(By.cssSelector(inputtype=checkbox); for(WebElement checkbox : checkboxes) checkbox.click(); dr.navigate().refresh(); / 打印當前頁面上有多少個checkbox System.out.printf(%dn, checkboxes.size(); / 選擇頁面上全部的input,然后從中過濾出全部的checkbox并

25、勾選之 List inputs = dr.findElements(By.tagName(input); for(WebElement input : inputs) if(input.getAttribute(type).equals(checkbox) input.click(); / 把頁面上最終1個checkbox的勾給去掉 List allCheckboxes = dr.findElements(By.cssSelector(inputtype=checkbox); allCheckboxes.get(allCheckboxes.size() - 1).click(); Thread.sleep(1000); System.out.println(browser will be close); dr.quit(); 爭辯checkbox.html必需與find_elments.rb在同一級名目下層級定位場景在實際的項目測試中,經(jīng)常會有這樣的需求:頁面上有很多個屬性基本相同的元素,現(xiàn)在需要具體定位到其中的一個。由于屬性

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論