您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源功能測(cè)試工具 > Selenium
Java Selenium (五) 元素定位大全
作者:小坦克 發(fā)布時(shí)間:[ 2017/7/12 15:05:57 ] 推薦標(biāo)簽:Selenium 功能測(cè)試工具

  頁(yè)面元素定位是自動(dòng)化中重要的事情, selenium Webdriver 提供了很多種元素定位的方法。 測(cè)試人員應(yīng)該熟練掌握各種定位方法。 使用簡(jiǎn)單,穩(wěn)定的定位方法。
  自動(dòng)化測(cè)試步驟

  在自動(dòng)化測(cè)試過(guò)程中, 測(cè)試程序通常的操作頁(yè)面元素步驟
  1. 找到Web的頁(yè)面元素,并賦予到一個(gè)存儲(chǔ)對(duì)象中 (WebElement)
  2. 對(duì)存儲(chǔ)頁(yè)面元素的對(duì)象進(jìn)行操作, 例如:點(diǎn)擊鏈接,在輸入框中輸入字符等
  3. 驗(yàn)證頁(yè)面上的元素是否符合預(yù)期
  通過(guò)這三個(gè)步驟, 我們可以完成一個(gè)頁(yè)面元素的操作, 找到頁(yè)面元素是很重要的一個(gè)步驟。 找不到頁(yè)面元素,后面沒(méi)法做了。
  Web頁(yè)面技術(shù)的現(xiàn)實(shí)復(fù)雜性, 造成大量的頁(yè)面元素很難定位。 經(jīng)常有人不知道怎么定位。
  定位方法大全
  使用WebDriver對(duì)象的findElement函數(shù)定義一個(gè)Web頁(yè)面元素
  使用findElements函數(shù)可以定位頁(yè)面的多個(gè)元素
  定位的頁(yè)面元素需要使用WebElement對(duì)象來(lái)存儲(chǔ),以便后續(xù)使用
  常用的定位頁(yè)面元素方法如下, 按推薦排序

  如何定位
  在使用selenium webdriver進(jìn)行元素定位時(shí),通常使用findElement或findElements方法結(jié)合By類(lèi)返回元素句柄來(lái)定位元素
  findElement() 方法返回一個(gè)元素, 如果沒(méi)有找到,會(huì)拋出一個(gè)異常 NoElementFindException()
  findElements()方法返回多個(gè)元素, 如果沒(méi)有找到,會(huì)返回空數(shù)組, 不會(huì)拋出異常
  如何選擇定位方法
  策略是, 選擇簡(jiǎn)單,穩(wěn)定的定位方法。
  1. 當(dāng)頁(yè)面元素有id屬性的時(shí)候,盡量使用id來(lái)定位。沒(méi)有的話再選擇其他定位方法
  2. cssSelector 執(zhí)行速度快,推薦使用
  3. 定位超鏈接的時(shí)候,可以考慮linkText或partialLinkText:但是要注意的是 ,文本經(jīng)常發(fā)生改變,所以不推薦用
  3. xpath 功能強(qiáng)悍。 當(dāng)時(shí)執(zhí)行速度慢,因?yàn)樾枰檎艺麄(gè)DOM, 所以盡量少用。 實(shí)在沒(méi)有辦法的時(shí)候,才使用xpath
  通過(guò)ID查找元素: By.id()
  通過(guò)頁(yè)面元素的ID來(lái)查找元素是為推薦的方式, W3C標(biāo)準(zhǔn)推薦開(kāi)發(fā)人員為每一個(gè)頁(yè)面元素都提供的ID屬性
  一旦元素被賦予了的ID屬性., 我們做自動(dòng)化測(cè)試的時(shí)候,很容易定位到元素. 元素的ID被作為的識(shí)別屬性, 因?yàn)槭强斓淖R(shí)別策略.
  以百度主頁(yè)為例, 搜索框的HTML示例代碼如下, 它的ID為kw
  <input type="text" autocomplete="off" maxlength="100" id="kw" name="wd" class="s_ipt">
  “百度一下”搜索按鈕元素的HTML示例代碼如下, 它ID為su
  <input type="submit" class="btn self-btn bg s_btn" id="su" value="百度一下">
  在Selenium/WebDriver 中通過(guò)ID查找元素的Java示例代碼如下
  WebDriver driver  = new FirefoxDriver();
          driver.get("http://www.baidu.com");
           
          WebElement searchBox = driver.findElement(By.id("kw"));
          searchBox.sendKeys("小坦克 博客園");
          WebElement searchButton = driver.findElement(By.id("su"));
          searchButton.submit();
          
          driver.close();

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