19-元素管理方式及解析

1.通过构建getElement,读取yaml文件,定位元素

  目标通过代码WebElement element=l.getElement("baidu_input");,可以读取yaml文件中的"baidu_input"。

(1)编写管理元素的yaml文件内容

  • baidu_input后面接上":",直接回车,然后空两格
  • type与value这两个key是固定的,后面接上“:”,然后空一格,也可以不空,如果value后面是xpath,建议加上引号
  • 在webDriver中,有By.id,By.name,By.xpath,By.className,By.linkText等,我们选取这几种常见的,所以type的冒号后面可用的值为id,name,xpath
  • value的值为type中对应的类型的值,比如百度首页上的输入框的id='kw'

(2)加载yaml文件

(3)编写By对象

  我们在写脚本时,元素对象一般是这样写的WebElement element=driver.findElement(By.id("kw"));所以接下来我们要把ml变量里的“value”转换成By对象。添加如下代码,这样通过ml中的type与value的值对就产生一个By对象。

(4)产生WebElement对象

  By对象产生后,就可以把这个对象传给driver.findElement方法,继而生成一个WebElement对象。

(5)调用WebElement对象

2.等待元素出现后调用

(1)waitForElement

  在调用locator时,保证locator是显示在页面上的,webdriver中有个WebDriverWait对象,代码如下:

 

  于是乎getElement方法里面就可以改为。

(2)waitElementToBeDisplayed

  如果waitForElement这个方法,返回的WebElement对象包括隐藏的,那么隐藏对象在操作的时候,就会报错。所以我们要把隐藏的去掉,只显示displayed的元素对象,代码如下。

  于是乎getElement方法里面就可以改为。

(3)waitElementToBeNonDisplayed

  既然有等待元素对象显示的,那么反之就有等待元素对象消失的方法。

 

(4)getElementNoWait

  如果元素不需要等待,那么可以增加一个方法,代码如下。

(5)重构getElement与getElementNoWait

  现在的问题是getElement与getElementNoWait的方法体很接近,于是我们来重构下这部分的代码。先增加一个方法,存放相同的方法体。

  再把getElement与getElementNoWait方法进行修改。

3.元素对象的参数化

(1)yaml文件中设置%s

  在这里的参数用%s来表示,这样可以在getElement或getElementNoWait方法中把我们需要的值传递进去。比如如下图。

(2)增加getLocatorString方法

(3)调整getLocator方法

(4)调整且重载getElement与getElementNoWait方法

(5)调用参数化结果

 

posted @ 2015-05-25 16:46  RunningYY  阅读(570)  评论(0)    收藏  举报