Selenium的基本使用

發表于:2015-12-22來源:uml.org.cn作者:不詳點擊數: 標簽:selenium
一、Selenium的Java編程基本語法 在Selenium的基本語法中首先是需要定位到頁面元素的,Selenium通過找尋到界面元素然后觸發相應的時間,通過頁面元素變化判斷是否執行了相應的操作

  一、SeleniumJava編程基本語法

  在Selenium的基本語法中首先是需要定位到頁面元素的,Selenium通過找尋到界面元素然后觸發相應的時間,通過頁面元素變化判斷是否執行了相應的操作。

  可以通過頁面元素的屬性獲取相應的頁面元素。

  1.通過Identifier(id)定位元素

  所給出的定位的HTML元素必須要有identifier,如果沒有就會報告未找到相應元素的錯誤。通過ID來標識可以確定唯一性。

  WebElement ele = By.id("idName");

  只有當你明確知道元素的id屬性,才能使用。

  2.通過Name定位元素

  使用id定位元素固然方面,但是id并不是html元素必須的,我們可以使用Name定位元素位置。

  使用Name定位元素的位置,會匹配第一個與Name匹配的元素。如果頁面中有多個相同的Name,可以使用更多的篩選器進行元素篩選的細化。

  WebElement ele = By.Name("name");

  只有明確知道原屬的那么,才能使用。

  3.通過Xpath定位元素

  在一些情況下無法得知頁面元素的id和name,還可以使用xpath從已知節點開始定位相應的元素。

  絕對路徑進行定位 xpath=/html/body/form[1]

  通過元素的相應屬性定位例如xpath=//form[@id='loginForm'] 表示從根節點開始查找一個form元素她包含一個屬性是id并且里面的值為loginForm

  找到某一個元素下相應的子元素 xpath=//form[input/@name='username'] 找到Form表單下面的input元素并且該元素有一個屬性name且該name的值是username。

  找到第一個指定的元素 xpath=//input[@name='username'] 扎到第一個input元素里面有一個name屬性并且該屬性值為username

  還可以使用更加細分的查找 xpath = //input[@name='continue'][@type='button'] 找到input標簽,1.該標簽有一個name=continue屬性和type=button屬性的元素。

  4.通過連接定位元素

  WebElement ele = By.LinkText("xxxx");

  當知曉相應的鏈接類容就可以定位到相應的元素。

  5.通過DOM元素定位元素

  DOM元素是HTML的基本元素,而且只有dom定位可以直接通過document

  dom=document.getElementById('loginForm')

  dom=document.forms['loginForm']

  dom=document.forms[0]

  document.forms[0].username

  document.forms[0].elements['username']

  document.forms[0].elements[0]

  document.forms[0].elements[3]

  6.通過tagName,通過標簽名稱進行定位

  List eles = By.TagName("tagname");

  在一個頁面中相同的tag標簽太多了,如果僅適用單個tagname查詢會找到一個列表。

  7.通過Css進行定位(Cascading Style Sheets)

  css=form#loginForm

  css=input[name="username"]

  css=input.required[type="text"]

  css=input.passfield

  css=#loginForm input[type="button"]

  css=#loginForm input:nth-child(2)

  二、Selenium錯誤現場保存方法(截屏和記錄日志)

  知曉了如何定位元素,我們就可以觸發頁面上相應的BOM事件了。

  那么當執行頁面響應的自動化操作的時候發生了錯誤我們應該怎樣才能更好的記錄相應的錯誤呢?記錄Log日志和保存相應的屏幕錯誤信息。

  1.首先記錄log日志,可使用為java量身定做的log4j進行日志記錄(我的另外一篇Log4j如何實現日志分模塊,分天,分錯誤級別進行記錄)

  2.截取錯誤發生時的屏幕,這樣就可以很快的定位錯誤發生前的操作和錯誤發生時的錯誤信息了。

  分享一段執行截屏的java代碼。

  /*截屏操作,遇到錯誤自動截屏存儲到指定位置。

  * 指定保存的路徑,然后通過 TakesScreenshot 的 getScreenshotAs進行截屏操作。

  * WebElement 繼承 TakesScreenshot 這個最大能耐焊好的基于了瀏覽器,返回當前的狀態

  * ——整個當前的HTML元素內容

  * ——可視化部分的HTML元素

  * */

  public static void captureScreenshot(String arg0,WebDriver driver){

  if(PrivateDataSource.Debug){

  logger.debug("調試截圖功能,并把截圖存儲到:"+PrivateDataSource.screenshotsResultsPath);

  }

  String screenshotsResultsPath=PrivateDataSource.screenshotsResultsPath;

原文轉自:http://www.uml.org.cn/Test/201411254.asp

...
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97