- 自动化测试步骤
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
- Assert 失败时,该测试将终止。
- Verify 失败时,该测试将继续执行,并将错误记入日显示屏 。也就是说允许此单个 验证通过。确保应用程序在正确的页面上。
- Waitfor用于等待某些条件变为真。可用于AJAX应用程序的测试。
- 如果该条件为真,他们将立即成功执行。如果该条件不为真,则将失败并暂停测试。直到超过当前所设定的超时时间。 一般跟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断言如下
- 相等断言:assertEqual(self, first, second, msg=None) 常用于title和url的对比来检查是否与预期结果一致;
self.assertEqual(u'用户 - Delicate Cloud Dashboard', driver.title, 'switch to Admin_Identity_User panel fail')
不等断言:assertNotEqual(self, first, second, msg=None) 与1相反,此断言不常用;
True断言:assertTrue(self, expr, msg=None) 此断言可用于对寻找某元素的表达式进行判断,如返回True则通过,否则Fail;
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来使用;