您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源功能測(cè)試工具 > Selenium
Selenium WebDriver高級(jí)用法
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2015/2/11 15:18:45 ] 推薦標(biāo)簽:Selenium 功能測(cè)試工具 單元測(cè)試

  掌握selenium初級(jí)用法后,來(lái)繼續(xù)深入學(xué)習(xí)。
  選擇合適的WebDrvier
  WebDriver是一個(gè)接口,它有幾種實(shí)現(xiàn),分別是HtmlUnitDrvier、FirefoxDriver、InternetExplorerDriver、ChromeDriver、OperaDriver,除了 InternetExplorerDriver只能在Windows平臺(tái)運(yùn)行,其他WebDriver均能跨平臺(tái)。
  如果追求運(yùn)行速度,HtmlUnitDriver是,但是它沒(méi)有運(yùn)行界面,不能實(shí)時(shí)看到運(yùn)行效果。如果想看到運(yùn)行效果,可以使用FirefoxDrvier,它會(huì)真正打開(kāi)瀏覽器,在屏幕上運(yùn)行,因此我們可以監(jiān)測(cè)頁(yè)面元素的位置、CSS的值等,但是代價(jià)是速度慢。
  這里為了簡(jiǎn)單,使用 HtmlUnitDriver.
  <code>WebDriver  driver = new HtmlUnitDriver();</code>
  導(dǎo)航
  有了WebDriver實(shí)例,第一件事情是打開(kāi)頁(yè)面。一般的做法是調(diào)用get方法:
  <code>driver.get("http://www.yeetrack.com");</code>
  WebDriver會(huì)一直等待,直到頁(yè)面加載完畢(也是”onload”方法釋放)。
  和頁(yè)面進(jìn)行交互
  僅僅打開(kāi)頁(yè)面還不夠,我們需要的是在頁(yè)面上進(jìn)行操作,進(jìn)一步講是要操作頁(yè)面中的html元素,如:
  <code><input type="text" name="passwd" id="passwd-id" /></code>
  要操作頁(yè)面元素,首先要定位元素,可以通過(guò)多種方法定位,如下:
  <code>WebElement element;
  element = driver.findElement(By.id("passwd-id"));
  element = driver.findElement(By.name("passwd"));
  element = driver.findElement(By.xpath("//input[@id='passwd-id']"));</code>
  定位元素時(shí),有兩點(diǎn)要注意。通過(guò)text的值來(lái)定位一個(gè)Link時(shí),text必須精確匹配;通過(guò)xpath來(lái)定位元素時(shí),如果匹配到多條,只會(huì)返回第一條結(jié)果,如果沒(méi)有匹配到,會(huì)拋NoSuchElementException異常。
  WebDriver擁有”Object-baseed” API,我們可以使用WebElement來(lái)表示所有的頁(yè)面元素。WebElement類有很多操作元素的方法,但是有些方法可能對(duì)當(dāng)前元素?zé)o效,不用擔(dān) 心,WebDriver會(huì)盡力幫我們處理。如,對(duì)一個(gè)”meta”標(biāo)簽元素,我們調(diào)用了WebElement的”SetSelected()”方 法,WebDriver會(huì)拋出異常。
  我們定位到一個(gè)Element,接下來(lái),我們可能要進(jìn)行一些操作,如想鍵入一些字符:
  <code>element.sendKeys("sone text");</code>
  當(dāng)然,我們也可以通過(guò)”Keys”這個(gè)類,來(lái)模擬鍵盤輸入:
  <code>element.sendKeys(" and some", Keys.ARROW_DOWN);</code>
  記住,我們向這些元素輸入的字符串,它們不會(huì)自動(dòng)清空,也是說(shuō)調(diào)用”sendKeys()”方法,是向元素中追加字符串。如果要清空一個(gè)input標(biāo)簽或者textarea:
  <code>element.clear();</code>
  填寫表單
  已經(jīng)知道了如何鍵入字符串,那么其他元素呢?如checkboxes,如何選中;”OPTION”標(biāo)簽,如何設(shè)置”setSelected()”。下面是處理Select標(biāo)簽的例子:
<code>WebElement select = driver.findElement(By.xpath("//select"));
List<WebElement> allOptions = select.findElements(By.tagName("option"));
for(WebElement option : allOptions)
{
System.out.println(String.format("Value is " %s, option.getAttribute("value")));
option.click();
}</code>
  上面的代碼,首先定位一個(gè)Select元素,然后獲取它下面的所有option,并且打印出來(lái),執(zhí)行一個(gè)click操作。明顯,如果想選中某個(gè)選 中,這種方法不是佳選擇。其實(shí)WebDrvier定義了Select類,它提供一些更快捷的方式, 如”selectByIndex()”、”selectByValue()”。
  表單填寫完畢,然后是提交,我們可以通過(guò)點(diǎn)擊提交按鈕,進(jìn)行提交。
  <code>driver.findElement(By.id("submit")).click();</code>
  或者,WebElement提供”submit()”這個(gè)方法,如果當(dāng)前元素處在form表單中,調(diào)用該元素的submit方法,WebDriver會(huì)自動(dòng)提交這個(gè)表單;如果不處于form表單中,會(huì)拋出”NoSuchElementException”異常。
  <code>element.submit();</code>

上一頁(yè)12下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd