webUI自動化測試框架(一):簡介和Demo入門
前言:selenium和webdriver是目前主流的ui自動化測試框架之一,selenium又稱為selenium RC,基本原理為js注入,而webdriver是直接利用了瀏覽器的native support(廠商支援)來操作瀏覽器,所以,對於不同瀏覽器,必須依賴一個特定的瀏覽器native component來實現把webdriver API轉化為瀏覽器的native invoke。在我們new出一個webdriver時,selenium首先會確認瀏覽器的native component是否存在且版本匹配(所以在使用瀏覽器驅動時,需要檢查該驅動版本與selenium的版本是否匹配,不匹配則不可用),接著在目標瀏覽器中啟動一整套的Web service,這套web service使用了selenium自己設計定義的協議,可以模擬使用者操作瀏覽器做出一系列動作。更多資訊可訪問官方的使用者手冊:http://www.seleniumhq.org/docs/
先列舉下關於【 webUI自動化測試框架】 本人打算編寫的部落格,有興趣的童鞋歡迎持續關注,這也算是我在實際工作中的一些學習和實踐記錄,可能有些不對或者不完善的地方,歡迎各位童鞋指正:
webUI自動化測試框架(一):webdriver簡介和Demo入門
webUI自動化測試框架(二):程式碼分層-基礎層
webUI自動化測試框架(三):程式碼分層-物件庫層
webUI自動化測試框架(四):程式碼分層-操作層及用例層
webUI自動化測試框架(五):持續整合及測試報告輸出
進入正題:
一、環境搭建
webUI自動化的環境搭建相比於app簡單的多,有jdk,有selenium jar包,有瀏覽器驅動就夠了。
1.前往官網下載selenium相關jar包:http://www.seleniumhq.org/download/,由於Google被牆,可到我的網盤下載,版本為selenium-java-3.4.0:http://pan.baidu.com/s/1dENrX89
2.新建java project,將selenium jar包及lib目錄下的jar包add to build path即可。
3.webdriver常用的方法:
元素定位方法:By.id(id)、By.xpath(xpath)、By.linkText(linkText)、By.className(className)、By.cssSelector(selector);
點選操作:driver.findElement(By.id(id)).click();
輸入:driver.findElement(By.id(id)).sendKeys("selenium");
獲取文字:driver.findElement(By.id(id)).getText();
獲取物件屬性值:driver.findElement(By.id(id)).getAttribute("屬性");
更多方法可查閱官網文件。
4.接下來我們寫個demo。
package com.etyero.testcase;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class WebDriverDemo {
private WebDriver driver;
private String baseUrl = "http://www.baidu.com";
private StringBuffer verificationErrors = new StringBuffer();
@BeforeMethod
public void setUp() throws Exception {
String browserDriverUrl = "D:/work/workplace/webUITest/browserDriver/chromedriver.exe";// 瀏覽器驅動路徑
//啟動chrome瀏覽器
System.setProperty("webdriver.chrome.driver", browserDriverUrl);
driver = new ChromeDriver();
driver.manage().window().maximize();// 最大化瀏覽器
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);//設定操作超時時長,該設定是全域性性的,即所有操作都最長等待30s
}
@Test
/**
* 搜尋selenium
*
* */
public void testLogin() throws Exception {
driver.get(baseUrl);
driver.findElement(By.id("kw")).clear();// 按id找到元素後,清空該元素
driver.findElement(By.id("kw")).sendKeys("selenium");// 輸入selenium
driver.findElement(By.id("su")).click(); //點選搜尋按鈕
}
@AfterMethod
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
Assert.fail(verificationErrorString);
}
}
}
至此,你已經進了webdriver的大門了,歡迎加入~~
相關推薦
webUI自動化測試框架(一):簡介和Demo入門
前言:selenium和webdriver是目前主流的ui自動化測試框架之一,selenium又稱為selenium RC,基本原理為js注入,而webdriver是直接利用了瀏覽器的native support(廠商支援)來操作瀏覽器,所以,對於不同瀏覽器,必須依賴一個特
webUI自動化測試框架(三):程式碼分層-物件庫層
前言:做UI自動化,不可避免的要和頁面上的元素打交道,有的童鞋可能會選擇把頁面元素的定位,操作都寫在測試程式碼中,當頁面元素比較少,測試程式碼比較少的情況下還好,但是一旦頁面元素多起來(實際運用中也不太可能少),測試程式碼一多,就難以閱讀和維護了,因為元素定位的程式碼並不能
webUI自動化測試框架(四):程式碼分層-操作層及用例層
前面將基礎打好了,接下來就是具體的使用了,業務層主要是頁面中的各種業務操作,如登入,修改使用者資訊等,我們把這些操作都封裝在業務類中,如登入操作,我們把它封裝成一個類,登入的大致流程為開啟登入頁,輸入使用者名稱密碼,點選登入按鈕,這樣一個完整的登入業務就算完成了。 那為什麼
webUI自動化測試框架(二):程式碼分層-基礎層
前言:該webUI自動化框架主要分為四層:基礎層、物件層、操作層、用例層,每一層負責各自的功能,這樣有益於提高程式碼的可讀性,複用性和擴充套件性。基礎層主要封裝了一些工具類,如解析xml檔案,讀取excel,分瀏覽器啟動,時間處理等,供其他類呼叫。 另外,筆者這邊主要使用的
pytest+allure自動化測試框架(一)
pytest是Python最流程的單測框架之一。 在本文中,我們將會介紹pytest的特點,功能和使用。 Demo 安裝Python依賴庫:pip3 install pytestpip3 install pytest-allure-adapto 檔案目錄: 三個pytest測試指令碼
UI層自動化測試框架(二):Appium基礎
申明:本章節引用很多第三方資料和網上的教程,在參考資料tab中我都有備註,請理解。 由於該框架是基於Appium的,所以先講講appium的基礎知識 一:Appium介紹 Appium是由nodejs的express框架寫的Http Server
Robot Framework自動化測試框架(一)
最近看到同學發了一篇RobotFramework自動化測試框架的文章,感覺已經很久沒有主動或被動接觸到其他的測試框架(感覺過了一萬年),遂抽了點時間瞭解了下這個東東。自動化測試大體思路類似,因此本文僅作簡單介紹。一、動手實踐動手實踐來源於:http://www.cnblogs
Python 單元測試框架系列:聊聊 Python 的單元測試框架(一):unittest
作者:HelloGitHub-Prodesire HelloGitHub 的《講解開源專案》系列,專案地址:https://github.com/HelloGitHub-Team/Article 前言 說到 Python 的單元測試框架,想必接觸過 Python 的朋友腦袋裡第一個想到的就是
Pytest測試框架(一):pytest安裝及用例執行
PyTest是基於Python的開源測試框架,語法簡單易用,有大量的外掛,功能非常多。自動檢測測試用例,支援引數化,跳過特定用例,失敗重試等功能。 # 安裝 ```python pip install -U pytest # 安裝 pytest --version # 檢視版本 pytest
編寫python web框架(一):簡介
== web 方法 nvi ever pytho 必須 ext sim 編寫一個最簡單的應用: def app(environ, start_response): start_response(‘200 OK‘, [(‘Content-Type‘, ‘tex
JAVA並行框架Fork/Join(一):簡介和代碼示例
over 框架設計 put 分割 gif 得到 java owa trace 一、背景 雖然目前處理器核心數已經發展到很大數目,但是按任務並發處理並不能完全充分的利用處理器資源,因為一般的應用程序沒有那麽多的並發處理任務。基於這種現狀,考慮把一個任務拆分成多個單元,每個單元
RobotFramework自動化測試框架(1)- RobotFramework簡介
對於RobotFramework自動化測試框架,我這裡會從三個單元進行闡述,希望能對你有幫助。 RobotFramework簡介 RobotFramework是什麼? Robotframework 是由python編寫的,一個開源的基於關鍵詞驅動的自動化測試框架,它可以做基於UI或者介面
Java類集框架(一):簡介及Collection介面
簡介 在實際專案中,涉及到儲存多個物件的操作往往會用到陣列。然而傳統的陣列存在一個問題:長度是固定的。Java 2提供了一個專門實現資料結構的開發框架——類集框架,框架的程式介面和類都儲存在java.util包中,其最為核心的用處就在於實現了動態物件陣列的操作,定義了大量的操作標準,核心
聊聊 Python 的單元測試框架(二):nose 和它的繼任者 nose2
作者:HelloGitHub-Prodesire HelloGitHub 的《講解開源專案》系列,專案地址:https://github.com/HelloGitHub-Team/Article 一、nose nose 是一個第三方單元測試框架,它完全相容 unittest,並且號稱是一個更好
【SSH之旅】一步步學習Hibernate框架(一):關於持久化
stc localhost 對象 schema hbm.xml java let pass [] 在不引用不論什麽框架下,我們會通過平庸的代碼不停的對數據庫進行操作,產生了非常多冗余的可是又有規律的底層代碼,這樣頻繁的操作數據庫和大量的底層代碼的反復
自動化服務部署(一):Linux下安裝JDK
evel pos 的人 lis jdk安裝 參考 8.0 根據 如何 自動化測試的主要目的是為了執行回歸測試。當然,為了模擬真實的用戶操作,一般都是在UAT或者生產環境進行回歸測試。 為了盡量避免內網和外網解析對測試結果的影響,一般將自動化測試服務部署在外網的服務器是比較
初識gauge自動化測試框架(二)
numbers 引用 文件中 自動化測試 文件描述 tor 興趣 測試 你是 看到一些同學對該工具有點一興趣,那麽我將繼續介紹Gauge自動化測試工具。 Gauge本質上一個BDD(Behavior Driven Development)測試框架。所以,首先你要了解BDD的
scrapy爬蟲框架(一):scrapy框架簡介
一、安裝scrapy框架 #開啟命令列輸入如下命令: pip install scrapy 二、建立一個scrapy專案 安裝完成後,python會自動將 scrapy命令新增到環境變數中去,這時我們就可以使用 scrapy命令來建立我們的第一個 scrapy專案了。
[翻譯]pytest測試框架(二):使用
此文已由作者吳琪惠授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 呼叫pytest 呼叫命令: python -m pytest [...] 上面的命令相當於在命令列直接呼叫指令碼 pytest [...](前提是python已經加入環境變數) 一些幫
[翻譯]pytest測試框架(一)
此文已由作者吳琪惠授權網易雲社群釋出。 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 純官網譯文而已。。。 pytest是一個成熟的、全功能的python測試工具。 pytest框架編寫測試用例時,小的用例會變得更容易編寫,但對於複雜的應用或者庫應該更謹慎選擇。 特徵: 1.斷言失敗之後具備詳細的