selenium結(jié)合斷言的使用

  • 自動化測試步驟

1)取預(yù)期結(jié)果;
2)取實際結(jié)果;
3)斷言:比較1)和2)來判斷測試是否通過;

1 package simplewebtest.test;
 2 
 3 import java.util.concurrent.TimeUnit;
 4 
 5 import org.openqa.selenium.By;
 6 import org.openqa.selenium.WebDriver;
 7 import org.openqa.selenium.firefox.FirefoxDriver;
 8 import org.testng.annotations.Test;
 9 
10 public class TestBaiduHome {
11     
12     @Test
13     public void searchSomething(){
14 
15         WebDriver driver=new FirefoxDriver();//打開Firefox; open firefox
16         driver.get("http://www.baidu.com");//打開百度open the url
17         driver.findElement(By.id("kw1")).sendKeys("GitHub");//輸入搜索關(guān)鍵字“GitHub";input search keyword
18         driver.findElement(By.id("su1")).click();//點擊搜索按鈕click the search button
19         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);//等頁面加載,10秒內(nèi)不加載成功即報超時。waiting for 10 seconds                        
20         String aResult=driver.findElement(By.xpath(".//*[@id='4']/h3/a")).getText();//取第四條搜索結(jié)果的標(biāo)題。 get the text of 4th search result
21         assert aResult.contains("GitHub");//做斷言 assertion
22         driver.findElement(By.xpath(".//*[@id='4']/h3/a")).click();//打開第四個搜索結(jié)果。Open the 4th search result on baidu
23         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);//等頁面加載,10秒內(nèi)不加載成功即報超時。waiting for 10 seconds                        
24         
25         //獲取所有窗口的handle,然后逐個切換,直到切換到最新窗口 switch to the new window
26         for(String winHandle : driver.getWindowHandles()){     
27             driver.switchTo().window(winHandle);     
28             }     
29         
30         String aTitle=driver.getTitle();//取新窗口的title
31         System.out.println("current widnow title is:"+aTitle);//打出來看看
32         assert aTitle.contains("GitHub");//斷言
33         
34     }
35 }

原文

  • 常用于斷言的三種模式

    斷言被用于三種模式: assert 、verify、waitfor
    1. Assert 失敗時,該測試將終止。
    2. Verify 失敗時,該測試將繼續(xù)執(zhí)行,并將錯誤記入日顯示屏 。也就是說允許此單個 驗證通過。確保應(yīng)用程序在正確的頁面上。
    3. Waitfor用于等待某些條件變?yōu)檎?。可用于AJAX應(yīng)用程序的測試。
    4. 如果該條件為真,他們將立即成功執(zhí)行。如果該條件不為真,則將失敗并暫停測試。直到超過當(dāng)前所設(shè)定的超時時間。 一般跟setTimeout時間一起用
  • 常用的斷言有

斷言 作用
assertLocation 判斷當(dāng)前是在正確的頁面
assertTitle 檢查當(dāng)前頁面的title是否正確
assertValue 檢查input的值, checkbox或radio,有值為”on”無為”off”
assertSelected 檢查select的下拉菜單中選中是否正確
assertSelectedOptions 檢查下拉菜單中的選項的是否正確
assertText 檢查指定元素的文本
assertTextPresent 檢查在當(dāng)前給用戶顯示的頁面上是否有出現(xiàn)指定的文本
assertTextNotPresent 檢查在當(dāng)前給用戶顯示的頁面上是否沒有出現(xiàn)指定的文本
assertAttribute 檢查當(dāng)前指定元素的屬性的值
assertTable 檢查table里的某個cell中的值
assertEditable 檢查指定的input是否可以編輯
assertNotEditable 檢查指定的input是否不可以編輯
assertAlert 檢查是否有產(chǎn)生帶指定message的alert對話框
waitForElementPresent 等待檢驗?zāi)吃氐拇嬖?。為真時,則執(zhí)行
  • 常用的unittest斷言如下
  1. 相等斷言:assertEqual(self, first, second, msg=None)  常用于title和url的對比來檢查是否與預(yù)期結(jié)果一致;
self.assertEqual(u'用戶 - Delicate Cloud Dashboard', driver.title, 'switch to Admin_Identity_User panel fail')
  1. 不等斷言:assertNotEqual(self, first, second, msg=None)  與1相反,此斷言不常用;

  2. True斷言:assertTrue(self, expr, msg=None)     此斷言可用于對尋找某元素的表達式進行判斷,如返回True則通過,否則Fail;

  3. False斷言:assertFalse(self, expr, msg=None)    此斷言可用于對尋找某元素的表達式進行判斷,如返回False則通過,否則Fail;

3和4可以配合使用selenium IDE所生成的[Python](http://lib.csdn.net/base/python "Python知識庫")腳本中is_element_present和is_alert_present來使用;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本節(jié)深入介紹了unittest的API。 8.1 測試用例Test cases相關(guān) unittest.TestCa...
    MirrorAi閱讀 1,143評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評論 19 139
  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,920評論 0 13
  • 洞見SELENIUM自動化測試 寫在最前面:目前自動化測試并不屬于新鮮的事物,或者說自動化測試的各種方法論已經(jīng)層出...
    厲鉚兄閱讀 6,836評論 3 47
  • 國慶節(jié)的一個中午,朋友們帶著孩子一起聚會。 朋友悠然同時帶來五歲的兒子杰和三歲的女兒貝,有了孩子的到來,一頓飯肯定...
    快速閱讀談文俊閱讀 414評論 1 1

友情鏈接更多精彩內(nèi)容