这个时候就完成对搜索这一功能的冒烟测试,测试执行代码没有使用TestNG,只是直接用了一个main函数。为了写博客简单方便,不推荐大家效仿。
如果还需要测试其它功能和使用其它节点,直接在PageObject类中加入相应的Field即可。
分割线-------------------------------------------------------------------------------------------------分割线
写到这里,如果没用过这个方法的人会越看越晕,现在简单的讲解一下它执行的原理:
在 PageObject类中我们创建的Field的名称是和页面有一定的对应关系的,不是随意取的,如果像上面代码这么写,默认的selenium会根据 Id最先进行元素查找,如果没有查找到再通过name进行查找,下面的我就不说了,因为你已经想到了。。。如果你担心页面的不规范或者复杂度比较高,容易 产生ID,name,Css等的冲突,selenium不能准确的识别元素, 那么请往下看:
selenium还提供了一种注解的方式,还是直接上代码:
1 public class PageObject { 2 private WebElement searchTypeSng; 3 @FindBy(name="fromCity") 4 private WebElement fromCity; 5 @FindBy(name="toCity") 6 private WebElement toWhere; 7 private WebElement fromDate; 8 9 public String calDate(int nextDays) { 10 // 当前日期加 n 天之后 n=30 11 Date date = DateUtils.addDays(new Date(), nextDays); 12 // 格式化时间格式 13 return DateFormatUtils.ISO_DATE_FORMAT.format(date); 14 } 15 16 public void searchTrip(WebDriver driver,String from, String to ,String date) { 17 BaseUtils.clearAndTypeString(driver,fromCity, from); 18 BaseUtils.clearAndTypeString(driver,toWhere, to); 19 BaseUtils.clearAndTypeString(driver,fromDate, date); 20 searchTypeSng.submit(); 21 } 22 23 } |
当你看到这两个annotations的时候,你已经明白了,是的,selenium提供注解的方式对页面的元素进行准确的定位,可 以参考的关键字有:className、css、id、linkText、name、partialLinkText、tagName、xpath.
另外selenium还提供了2个关键字,一个是how,另一个是using,如何使用它们就不在这里写了,因为笔者觉得,用这两个关键字更麻烦,理解起来也麻烦。
关于PageObject & PageFactory的使用,就简单的写了这么多,关于PageFactory还有很多知识,我会抽出时间写在下篇文章里,如果有正在使用这种模式的朋友,请多多批评和指点,相互讨论学习。