2016-03-22 19 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

相關問題