selenium webdriver POM(Page Object Model)自動化測試框架
POM面對象模型架現在已經成為業界非常流行的測試自動化框架,因為它易於維護和減少程式碼的重複,深的大家青睞。
POM模型的主要優點:
如果對任何頁面UI進行更改,不需要我們改變任何測試用例,我們只需要更改頁面物件中的程式碼(只在一個地方)。使用selenium的許多其他工具都遵循頁面物件模型。
POM模型要求將一個頁面上所有功能/可重用元件寫到一個class檔案中。現在說, 例如,我們設計4個頁面,分別為主頁,登入頁,建立帳戶和忘記密碼頁等。
按照谷歌wiki頁面物件
“在Web應用程式的UI中,測試與互動的區域。頁面物件簡單地將這些物件建模為測試程式碼中的物件。這減少了重複程式碼的數量,意味著如果UI發生變化,修復只需要在一個地方應用。
針對以上頁面,我們將建立類homepage.class、LoginPage.class、CreateAccountPage.class和ForgotPasswordPage.class。在每一個類中,我們將識別和編寫特定於頁面的可重用方法。
在第一頁“谷歌主頁”,它將有許多選項,如搜尋,登入,+你,影象,隱私等連結。基於使用者行為定位到相應的頁面。現在,我們想要自動化的所有功能都應該為每個頁面提供可重用的方法/元件。
現在我們的主頁是谷歌頁面,我們可以通過點選谷歌頁面上的任何連結導航到其他頁面。當我們導航到其他頁面時,我們需要返回那個頁面物件。否則返回當前頁物件,因為此操作不能導航到其他頁面物件表示的另一個頁面。
POM模型提供以下優點。
1。測試程式碼和頁面程式碼(如定位器)分離(或如果你使用一個UI佈局圖)。
2。頁面提供的服務或操作只有一個儲存庫,而不是分散在每個測試用例中
在這兩種情況下,由於UI變更所需的任何修改都在一個地方進行。
示例:
public void loginTestCase() { driver.navigate().to(URL); driver.findElement(By.name("signIn")).click(); driver.findElement(By.id("username")).sendKeys("testuser"); driver.findElement(By.id("password")).sendKeys("testpassword"); driver.findElement(By.name("loginbtn")).click(); WebDriverWait wait = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("profile"))); String Expected=driver.findElement(By.id("message")).getText(); Assert.assertEquals(Expected, "Welcome"); }
如果你觀察上面的測試,有測試和測試定位器不分離。如果是這樣的話,將來如果使用者介面發生變化,必須在多個地方進行更改。它也將成為難以確定這些定位器作為定位器的機會被用在多個測試更。
我們將嘗試通過實現頁面物件模型重寫上面的示例:
/***
* Tests login functionality
*/
public void loginTestCase() {
// To go to home page
homePage.gotoHomePage();
//To click on SignIn link
accountLoginPage = homePage.clickOnSignIn()
//To verify if user is navigated to sign-in page
Assert.assertTrue(accountLoginPage.verifyPage());
//Login to the account
accountLoginPage.userLogin(username,password);
//To verify if user is navigated to user home page after successfull login
Assert.assertTrue(userHomePage.verifyPage());
}
在上面的測試中,我們沒有使用任何定位器。它是由driver.findelement的完全分離等,例外,沒有靜態值的程式碼等。我們將以在多個頁面中定義的方法的工作。基於測試,我們將導航到所需的頁面並訪問這些頁面方法。
相關推薦
selenium webdriver POM(Page Object Model)自動化測試框架
POM面對象模型架現在已經成為業界非常流行的測試自動化框架,因為它易於維護和減少程式碼的重複,深的大家青睞。 POM模型的主要優點: 如果對任何頁面UI進行更改,不需要我們改變任何測試用例,我們只需要更改頁面物件中的程式碼(只在一個地方)。使用selenium
Appium+Python之PO模型(Page object Model)
思考:我們進行自動化測試時,如果把程式碼都寫在一個指令碼中,程式碼的可讀性會變差,且後期程式碼維護也麻煩,最好的想法就是測試物件和測試用例可以分離,可以很快定位問題,程式碼可讀性高,也比較容易理解。這裡推薦大家在自動化框架中加入PO模型思想,那什麼是PO模型呢? 所謂的PO就是page object,
XML DOM(Document Object Model)
onf tco 節點數據 及其 setattr des tag substr dal 1、XML DOM 是用於獲取、更改、添加或刪除 XML 元素的標準。2、節點(XML 文檔中的每個成分都是一個節點): 整個文檔是一個文檔節點; 每個X
BOM—瀏覽器物件模型(Browser Object Model)
1,javascript 組成部分: 1.ECMAscript(核心標準): 定義了基本的語法,比如:if for 陣列 字串 ... 2.BOM : 瀏覽器物件模型(Browser Object Model) 2,BOM
iOS自動化探索(五)自動化測試框架pytest - Assert斷言的使用
使用assert語句進行斷言 pytest允許使用標準的python assert語法,用來校驗expectation and value是否一致 程式碼演示: def func(): return 3 def test_func():
文檔對象模型(Document Object Model--DOM)
blur 應用程序 pre 屬性和方法 ati 傳輸 ssi end bsp 文檔對象模型(Document Object Model--DOM) 1.DOM a) 允許腳本和程序動態讀取和更新文檔內容、結構和樣式的語言和平臺 b) 使用DOM操作HTML頁面可以不用每次從
Atitit 常見概念與技術 dom及其解析 目錄 1.1. Dom概念(文件物件模型(Document Object Model))是什麼 1 1.1.1. 節點 2 1.1.2. Node 層次
Atitit 常見概念與技術 dom及其解析 目錄 1.1. Dom概念(文件物件模型(Document Object Model))是什麼 1 1.1.1. 節點 2 1.1.2. Node 層次 2 1.1.3. 文件樹 3 2. Dom分類 3 2
頁面物件(Page Object)模式
內容轉載自 https://www.cnblogs.com/yytesting/p/6973474.html 頁面物件(Page Object)模式是目前自動化測試領域普遍使用的設計模式之一,此模式可以大大提高測試程式碼的複用率,提高測試指令碼的編寫效率和維護效率,是中級自動化測試工程師的必備技能之一。
selenium webdriver學習(十一)-怎麼等待頁面元素載入完成
selenium webdriver學習(十一)------------如何等待頁面元素載入完成web的自動化測試中,我們經常會遇到這樣一種情況:當我們的程式執行時需要頁面某個元素,而此時這個元素還未載入完成,這時我們的程式就會報錯。怎麼辦?等待。等待元素出現後再進行對這個
JAVA自動化測試之頁面物件模型(Page Object)
在做Selenium WebDriver 自動化測試時,我們可以使用頁面物件模型。這個模型可以使測試指令碼有更高的可維護性,減少了重複的程式碼,把頁面抽象出來。物件模型也提供了一個註釋,幫助快取遠端,避免出現元素過期的問題。 (一)分離頁面元素 public cl
java內存模型(Java Memory Model)
ble watermark 了解 計算機 als stack lin 方法 兩個 內容導航: Java內存模型硬件存儲體系結構Java內存模型和硬件存儲體系之間的橋梁: 共享對象的可見性 競爭條件 Java內存模型規定了JVM怎樣與計算機存儲系統(RA
DPM(Deformable Part Model)原理詳解(匯總)
特征向量 成就 算法思想 filter people tell 梯度 錨點 精度 寫在前面: DPM(Deformable Part Model),正如其名稱所述,可變形的組件模型,是一種基於組件的檢測算法,其所見即其意。該模型由大神Felzenszwalb在2008年提
JSON(JavaScript Object Notation)
dex spa 本質 寫法 保存對象 面向對象的語言 冒號 con ota 什麽是JSON: 是一種數據交換格式 可以頂替xml JSON語法規則: 在 JS 語言中,一切都是對象。因此,任何支持的類型都可以通過 JSON 來表示,例如字符串、數字、對象、
selenium基礎心得(java運用 一)
用戶操作 操作 這不 基本 select 找不到 情況 存在 sendkeys Selenium是一個web應用程序測試工具,直接運行於瀏覽器中,模擬用戶操作.近兩個月的時間,我們的工作主要是使用其部分特性來做爬蟲.在使用的過程中,從技術預演到項目整合,一些個人總結如下:
空物件模式(Null Object Pattern)。
定義 空物件模式是通過實現一個預設的無意義物件來避免null值出現,簡單的說,就是為了避免在程式中出現null值判斷而誕生的一種常用設計方法。 示例 舉個簡單的例子來說明,我們寫一個聽動物叫聲的模擬程式,如下所示。 public interface Animal { /** *
自動化測試之Page Object Model
PO是什麼: 1、頁面物件模型(PO)是一種設計模式,用來管理維護一組web元素的物件庫 2、在PO下,應用程式的每一個頁面都有一個對應的page class 3、每一個page class維護著該web頁的元素集和操作這些元素的方法 其最終目的還是將頁面物件(方法和元素)與測試程式碼分離,提高測試程
Page Object Model
reg 屬性。 tro mode 結構 keys sign ext css Page Object Model Framework which is also known as Page Object Design Pattern or Page Objects PO模式
設計模式之傳輸物件模式(Transfer Object Pattern)
傳輸物件模式(Transfer Object Pattern)用於從客戶端向伺服器一次性傳遞帶有多個屬性的資料。傳輸物件也被稱為數值物件。傳輸物件是一個具有 getter/setter 方法的簡單的 POJO 類,它是可序列化的,所以它可以通過網路傳輸。它沒有任何的行為。伺服器端的業務類通常
NLP --- 文字分類(向量空間模型(Vector Space Model)VSM)
本節主要介紹文字分類中的一種演算法即向量空間模型,這個演算法很經典,包含文字預處理、特徵選擇、特徵權值計算、分類演算法、這是VSM的幾個主要步驟,在宗老師的書裡都有詳細的講解,這裡也會進行深入的講解,淺顯易懂的是目的,深入理解是目標,下面給出這個VSM模型的方框流程圖: 其中分詞和詞袋
一個基於python+selenium的page-object自動化測試框架
先上框架git連結:https://gitee.com/yukarijiang/watcher#0-qzone-1-79223-d020d2d2a4e8d1a374a433f596ad1440這個框架目前才剛剛起步,還有很多不完善和不適當的地方,但可以用於學習selenium