2017-06-06 120 views
0

守護夜有沒有辦法檢查每次點擊事件後是否出現彈出窗口?守夜 - 在每次點擊事件後檢查彈出窗口

我有一個問題,隨機出現一個錯誤消息,我不想爲每個點擊事件寫相同的回調函數。

我已經嘗試過Global.js中的after和afterEach命令,但這些命令只會在整個測試套裝後運行。 我也在本地測試過一個測試文件,雖然它也沒有涵蓋所有的單擊事件,甚至認爲官方網站寫道「...而beforeEach和afterEach在每個測試用例之前和之後都運行(測試步驟)」?

解決方案我在尋找:

.waitForElementVisible('selector') 
    .click('selector') 
    .click('selector') 

解決方案我想出迄今:

.waitForElementVisible('selector') 
    .click('selector', isPresent) 
    .click('selector', isPresent) 

isPresent作爲一個回調函數,該函數執行檢查和關閉,如果彈出窗口它出現。

是否有另一種編寫函數的方法(帶或不帶和/或forEach),以便在每次單擊事件之後或每個命令之後調用它。因此,我不必編寫isPresent重複代碼?

感謝先進!

回答

1

您可以將這樣的事情在你的頁面對象文件:

var popupCommand = { 
popupCheck:function(){ 
return this.waitForElementVisible('selector', 5000) 
    .click('selector', isPresent) 
    .click('selector', isPresent) 

}, 

module.exports = { 
commands:[popupCommand], 
elements:{ 
firstElement: {selector: 'xpath',locateStrategy: 'xpath'}, 
secondElement: {selector: 'css'}, 


} 
} 

其中「popupCommand」將是你的頁面目標文件的名稱,例如「彈出」。此外,您還必須在此處插入isPresent回調函數,以便您可以使用它。 我盡力解釋你儘可能多的和怎麼做:)

+0

謝謝,我會看看它:) –

0

你應該使用.switchWindow()方法。

+0

感謝您的迴應,但我的問題仍然存在。我仍然需要檢查錯誤窗口是否彈出。因此,我必須每次都複製.click()事件的回調函數。我試圖通過全局指定它來避免它,它會在每個事件後自動調用。就像foreEach一樣,但不幸的是它不能在全球範圍內在本地工作。 Thkans! –

0

爲什麼不寫你自己的自定義命令特定的情況下,這樣你會避免重複的代碼?

+0

謝謝,我試圖找出一個辦法。不過,我仍然不得不每次都在click()事件後調用自定義命令? –

+0

但與自定義命令,你可以做到這一點只有一個命令,多數民衆贊成 – timetraveler90

相關問題