selenium结合断言的使用

作者: 一见你就笑嘻嘻 | 来源:发表于2018-12-04 12:28 被阅读125次
  • 自动化测试步骤

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来使用;

相关文章

网友评论

    本文标题:selenium结合断言的使用

    本文链接:https://www.haomeiwen.com/subject/idjmcqtx.html