问题的抛出: 下面名名是个编辑框,属性是webElement 的?为什么用SetTOProperty()方法不能修改innertext?我的目的很简单就是想用自动化脚本编辑这个编辑框的内容: 脚本按照如下写: Browser(”浏览器”).Page(”page/design_店铺装修”).Frame(”Frame”).webElement(”模块内容”).SetTOProperty”innerText”,”我想修改这块的内容” 脚本执行完毕后,对象库里的属性值没有发生变化?难道SetTOProperty不起作用吗?问号一个个地出现~~~ 问题的解决: 带着问题,开始一步步地寻找解决途径!上网查资料发现: 原来在脚本中使用SetTOProperty对对象的属性进行修改,是不会真正改变对象库中对象的属性值,只是一个临时的修改,测试运行时生效,运行结束后结束,不会对对象库里的对象有任何影响。(哦,怪不得也不报错,也不对进行修改。得想想其他的方法) 那么我们还有什么其他办法吗? 仙人指点:测试对象还有一个“Properties”,叫Object,通过它,可以修改Run-time对象的属性值来达到修改目标的对象的属性值。通过Object Spy的方法,获取得该对象的Run-time: 从上图中可以看到,WebElement有一个“innerText”属性,它的属性值也就是在程序中输入的文本内容。因此,如果使用“测试对象.object”的方法对innerText属性值进行修改,也就相当于在程序中手工输入了文本。 将我们刚才的脚本修改下: Browser(”浏览器”).Page(”page/design_店铺装修”).Frame(”Frame”).webElement(”模块内容”).object.innertext=”我想修改这块的内容” 达到我们预期的目标! 总结: 如果希望改变应用程序中对象的属性值,应该通过“Object.object”方法,来改变对象的属性!而使用测试对象的SetToProperty方法,只能临时改变仓库中对象的属性,对程序中的对象没有任何作用! 关于SetToProperty方法和“Object.object”方法应该还有很多内容需要去挖掘吧~~做得越多,可能遇到的实际问题会越多,相应地会积攒我们越来越多解决问题能力。经验是一点一滴堆积起来的:重视每一个问题,积累每一滴经验。 |