2016-03-22 18 views
2

我所有的页面对象是这个样子:如何通过默认的页面对象的文件,使Nightwatch使用XPath的

elements: { 
     header: { 
     locateStrategy: 'xpath', 
     selector: "//h3[text()='Welcome']" 
     }, 
     loginButton: { 
     locateStrategy: 'xpath', 
     selector: "//button[text()='Login']" 
     }, 
     forgotPasswordLink: { 
     locateStrategy: 'xpath', 
     selector: "//a[text()='Forgot Password?']" 
     }, 
     signupButton: { 
     locateStrategy: 'xpath', 
     selector: "//button[text()='Signup']" 
     } 

这将是更好的方式,如果我可以只说:“到处都是使用XPath” - 这将所有崩溃的境地

The docs说,你应该能够设置你的“测试设置” "use_xpath" : true,但我试图在所有的地方,我可以在nightwatch.json看到,它没有任何效果。 (这并不完全清楚它们是否意味着此设置将影响页面对象文件中的声明,无论如何:该示例仅显示它影响测试用例中的次要断言调用)。

回答

2

你可以使用这样的JavaScript函数(取决于你喜欢的方式来创建对象):

var xSelector = function (selector) { 
    return { 
     selector: selector, 
     locateStrategy: 'xpath' 
    } 
}; 

,然后用它像这样:

elements: { 

    xxx: xSelector('//a[text()="Bank Details"]') 
    createStepButton: { selector: '#menu-create-item' }, 
} 

提示:在createStepButton上面的示例仍在使用css选择器策略。考虑还要创建一个cssSelector函数来实现元素部分的统一可读性。

+1

我遇到同样的问题。我冒昧地说,在nightwatch.js中有一个错误。这个夜班团队中的任何人都会关心评论吗?我的测试套件正在增长,并有这样的:locateStrategy:'xpath',遍布我的代码并不好玩。 – Buzzer

相关问题