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

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

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