Web自动化框架搭建2

上一篇 / 下一篇  2015-04-13 14:03:00 / 个人分类:自动化-selenium

/**

     * 模拟Hover动作

     * @param locator

     * @note 暂时只支持ChromeDriver

     */

Selenium2.0本身就是原生提供mouseOver这个函数的。但是,至少在2.18.0,这个API还是一个废材。。。

    public void mouseOver(String locator) {

       pause();

       waitForElementPresent(locator);

      

以下这段代码似乎不是很灵光,优化进行中。。。

       // Hover

       WebElement we = BrowserCore.findElement(By.xpath(locator));

       Actions builder = new Actions(BrowserCore);

       builder.moveToElement(we).build().perform();

       return;

    }

   

    /**

     * Flash中点击元素

     * @param flashID     flash本身在网页中ID

     * @param targetName 目标元素在flashName

     */

关于Flash自动化,我将另开一文讲解(传送门:http://qa.blog.163.com/blog/static/19014700220121278928634/),里面会用到JS执行器。

    public void flexClick(String flashID, String targetName) {

    }

   

    /**

     * 获取Flash中元素左上角的(浏览器,非屏幕)坐标

     * @param flashID    flash本身在网页中ID

     * @param targetName 目标元素在flashName

     * @return           坐标[x,y]

     */

    public int[] flexGetPosition(String flashID, String targetName) {

    }

   

    /**

     * 设置BrowserEmulator各次操作之间的时间间隔,单位毫秒

     */

Selenium2.0原生提供setSpeed函数,用以控制用例执行速度,但是,至少至2.18.0,这个API还是个废材。。。只好自己实现一个。

基本上调试的时候会把步长设为500毫秒,真正运行时设为0毫秒。

    private void pause() {

此处使用万恶的Thread.sleep

}

 

从这里开始是几个元素定位和判断的函数,所谓用例自然要有判定,才有成功与失败之分,此处省略N行代码。。。

    /**

     * 页面元素定位

     * @param locator 暂时只支持xpath,后续考虑支持更多形式,如:idname

     */

    private void waitForElementPresent(final String locator) {

 

       int Timeout = Integer.parseInt(GlobalSettings.Timeout);

      

       try {

           new Wait() {

              public boolean until() {

                  return Browser.isElementPresent(locator);

              }

           }.wait("*** 页面元素(" + locator + ")定位失败 ***"Timeout);

       } catch (Exception e) {

           Assert.fail("*** 页面元素(" + locator + ")定位失败 ***");

           // TODO 更多自定义信息打印

       }

    }

 

再讲GlobalSettings

不说了,很短小

全局变量设置

 * @author 尘泥

 */

public class GlobalSettings {

    /**

     * 设置浏览器类型

     *     1   FireFox

     *     2   Chrome

     **/

    public static int BrowserCoreType = 2;

 

    public static String ChromeDriverPath = "res/chromedriver.exe";

   

    // BrowserEmulator各次操作之间的时间间隔,单位毫秒

    public static String StepInterval = "500";

   

    // BrowserEmulator等待超时时间,单位毫秒

    public static String Timeout = "30000";

   

}

 

最后是PageElement

对页面元素做了简单封装,可以使元素定位清晰一些。

用于页面元素定位

 * @author 尘泥

 */

public class PageElement {

 

    // 页面元素Xpath

TAG:

 

评分:0

我来说两句

我的栏目

日历

« 2024-05-03  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 3410
  • 日志数: 4
  • 建立时间: 2013-06-21
  • 更新时间: 2015-04-13

RSS订阅

Open Toolbar