zk_testing 发表于 2012-3-16 17:03:08

selenium写扩展命令报错求指导

下面是我写的一个获取当前页面某个元素CSS样式表里面某个属性值的扩展命令;
但是在ItemVlaue = window.getComputedStyle(element,null).cssItem;这一步出错了。。。
找了些资料,看不出问题在哪;求达人指导。。。。。。。。。
PS:暂时这个命令还没有做XPATH、浏览器处理;

// JavaScript Document


/*
        获取当前页面一个元素的CSS样式对应属性;
        参数:css的对应id
*/

//根据元素选择器获取元素的某个样式属性值
function getCssAttribute (/*id*/ Selector,/*CSS属性字段*/ cssItem){
        var ItemVlaue,element;
        element = document.getElementById(Selector);
        alert(2);
        /*这个方法只能获取HTML中的style属性,不能获取样式表中的属性ItemVlaue = element.style.cssItem.value;
        */
       
       
        //需要使用getComputedStyle(不支持IE) 和currentStyle(仅IE)来使用...据说这俩都不准。。。推荐用JQ
        //先用getComputedStyle试水
        ItemVlaue = window.getComputedStyle(element,null).cssItem;
        return ItemVlaue;
}

//验证一个元素的某个CSS属性的值
Selenium.prototype.assertCssItem = function(/*id*/ Selector,/*CSS属性字段*/ cssItemAndValue){       
        var CSSItem,Item,location,actualItemValue,expectedItemValue ;
        //分解传进来的参数:将cssItemAndValue分解成属性和值;使用分号来分割;第一个为属性名,第二个为要验证的属性值
        CSSItem = cssItemAndValue.split(":");
        //alert(CSSItem);
        Item = CSSItem;
        expectedItemValue = CSSItem;
        alert(Selector);
       
        location = Selector;
        alert(1);
        /* 根据属性名获取当前的值 */
        actualItemValue = getCssAttribute(location,Item);
        alert(actualItemValue);
        alert(3);
        //进行比较
        Assert.matches(expectedValue, actualValue);
       
}

zk_testing 发表于 2012-3-26 22:09:28

我自己解决了。。。。
定位页面使用
this.page().findElemetn(locator)
获取计算后的样式,
Firefox下使用getComputedStyle(element,null),返回一个element当前计算后的样式对象,之后对应的方法获取对应的字段;
IE下使用getCurrentStyle,其他同getComputedStyle。
页: [1]
查看完整版本: selenium写扩展命令报错求指导