selenium结合断言的使用

  • 自动化测试步骤

1)取预期结果;
2)取实际结果;
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");//输入搜索关键字“GitHub";input search keyword
18         driver.findElement(By.id("su1")).click();//点击搜索按钮click the search button
19         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);//等页面加载,10秒内不加载成功即报超时。waiting for 10 seconds                        
20         String aResult=driver.findElement(By.xpath(".//*[@id='4']/h3/a")).getText();//取第四条搜索结果的标题。 get the text of 4th search result
21         assert aResult.contains("GitHub");//做断言 assertion
22         driver.findElement(By.xpath(".//*[@id='4']/h3/a")).click();//打开第四个搜索结果。Open the 4th search result on baidu
23         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);//等页面加载,10秒内不加载成功即报超时。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 失败时,该测试将继续执行,并将错误记入日显示屏 。也就是说允许此单个 验证通过。确保应用程序在正确的页面上。
    3. Waitfor用于等待某些条件变为真。可用于AJAX应用程序的测试。
    4. 如果该条件为真,他们将立即成功执行。如果该条件不为真,则将失败并暂停测试。直到超过当前所设定的超时时间。 一般跟setTimeout时间一起用
  • 常用的断言有

断言 作用
assertLocation 判断当前是在正确的页面
assertTitle 检查当前页面的title是否正确
assertValue 检查input的值, checkbox或radio,有值为”on”无为”off”
assertSelected 检查select的下拉菜单中选中是否正确
assertSelectedOptions 检查下拉菜单中的选项的是否正确
assertText 检查指定元素的文本
assertTextPresent 检查在当前给用户显示的页面上是否有出现指定的文本
assertTextNotPresent 检查在当前给用户显示的页面上是否没有出现指定的文本
assertAttribute 检查当前指定元素的属性的值
assertTable 检查table里的某个cell中的值
assertEditable 检查指定的input是否可以编辑
assertNotEditable 检查指定的input是否不可以编辑
assertAlert 检查是否有产生带指定message的alert对话框
waitForElementPresent 等待检验某元素的存在。为真时,则执行
  • 常用的unittest断言如下
  1. 相等断言:assertEqual(self, first, second, msg=None)  常用于title和url的对比来检查是否与预期结果一致;
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来使用;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本节深入介绍了unittest的API。 8.1 测试用例Test cases相关 unittest.TestCa...
    MirrorAi阅读 1,065评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,886评论 18 139
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,504评论 0 13
  • 洞见SELENIUM自动化测试 写在最前面:目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出...
    厲铆兄阅读 6,754评论 3 47
  • 国庆节的一个中午,朋友们带着孩子一起聚会。 朋友悠然同时带来五岁的儿子杰和三岁的女儿贝,有了孩子的到来,一顿饭肯定...
    快速阅读谈文俊阅读 336评论 1 1