2017-07-27 34 views
0

假设在写入或验证测试,该命令代码是:在Magellan/Nightwatch框架中,如何在元素上设置CSS大纲?

pToggleMyCoolToggle: function() { 
    var selectors = this.elements; 

    return this 
    .getEl(selectors.myCoolCheckbox.selector) 
    .moveToEl(selectors.myCoolCheckbox.selector) 
    .clickEl(selectors.myCoolCheckbox.selector); 
} 

如何可以在浏览器在这种元件可以与轮廓使用CSS所示:

outline: 3px dotted orange 

通过添加一些代码到上面的命令,使用麦哲伦/ Nightwatch里面的方法?

+0

你试过.injectScript()吗? – QualiT

+0

有没有办法让HTML元素变得简单,这样我甚至可以做内联样式'el.sytle =“outline:3px dotted orange”'?我认为jQuery不是主动的,否则我可以执行'$(el).css({outline:“3px dotted orange”});' –

+0

自动化测试会修改HTML元素/属性直。但是,回答。 – QualiT

回答

0

只是,请使用.execute

client.execute(function(){ 
    document.getElementById('idYouWantToTarget').style.border="3px dotted orange"; 
}) 
+0

我不得不使用'this.client',否则它没有被定义...但是它也给了'TypeError:this.client.execute不是一个函数' –

+0

实际上是理想的,它可以通过类似'this.getDOMEl(selectors.myCoolCheckbox.selector).style.outline =“3px dotted orange”;'它看起来像OOP也有点奇怪,但对于'this.getEl(selectors.myCoolCheckbox.selector)''听起来就像你会得到一个元素并返回它,然后在代码中它将调用此元素上的moveToEl(selectors.myCoolCheckbox.selector)...但为什么你必须再次指定选择器?我认为通常的面向对象的方式就像'farm.getCow()。eat()' - 你通常不会说'farm.getCow(cowSelector).eat(cowSelector)' –

+0

对于你的第一个问题'this.client ',如果你在除了测试对象之外的其他任何环境中使用它〜module.exports = new Test(),比如pageObject,是的,它的做法是不同的。我是测试对象的粉丝,页面obj对于我测试的应用程序类型不起作用。关于选择器,我不知道你在说什么与getEl。 – QualiT

0

我刚刚发现这个名字selectors.myCoolCheckbox.selector是由一些业余写的。它应该是paymentPage.useCreditCardRadio.selector。所以最后的selector指出了CSS选择器。

selectors = this.elements也是非常误导。 selectors不是“元素”。它可能是paymentPage = this.elementspaymentPage有许多属性,包括useCreditCardRadio。或者它可能是paymentPageElements = this.elements这意味着paymentPageElements是一个包含所有元素的对象。因此,此示例显示了命名影响编程的不好之处,对于将来需要触摸或编辑代码的所有人员而言。

因此,你应该能够使用

var el = document.querySelector(paymentPage.useCreditCardRadio.selector); 

,一旦你拥有的元素,你可以大纲添加到它。