1. 程式人生 > >webUI自動化測試框架(一):簡介和Demo入門

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.斷言失敗之後具備詳細的