2015-11-13 16 views
1

我有自動化測試,需要在Chrome桌面版和Chrome移動版上運行。我的一個測試需要桌面版單擊僅在懸停時出現的元素,但是,移動版不需要懸停,元素始終可見。我有麻煩找到一種方法來告訴在iPad上運行的測試忽略懸停步驟,只需點擊按鈕。我可以爲ipad創建一個方法,並分開spec文件,但如果有簡單的修復方法,我不想浪費時間。不是所有的自動化測試在不同的瀏覽器中運行相同

回答

1

但是,移動版本不需要懸停,元素始終可見。

我們可以使用它。基本上,如果元素是可見的,點擊它,如果不是 - 懸停,然後單擊:

elm.isDisplayed().then(function (isDisplayed) { 
    if (!isDisplayed) { 
     // hover what you need to hover 
    } 
    elm.click(); 
}); 

另外還有一點getCapabilities() function,讓你接觸到電流能力的對象。你可能有一個輔助函數將決定是否根據當前瀏覽器的測試是在執行上需要懸停讓我們先寫我們isMobile樣的功能和定義它的browser對象:

browser.isMobile = function(ver) { 
    var platformName, version; 

    return browser.getCapabilities().then(function(s) { 
     platformName = s.caps_.platformName; 
     version = s.caps_.version; 

     return /Android|iOS/.test(platformName); 
    }); 
}; 

樣品輔助函數:

function hoverClick(elm) { 
    return browser.isMobile().then(function (isMobile) { 
     if (!isMobile) { 
      browser.actions().mouseMove(elm).perform(); 
     } 
     return elm.click(); 
    }); 
} 

參見:Protractor: accessing capabilities

您還可以延長browser.actions()並添加自定義hoverClick動作,請參見:

+0

會,如果我有多個瀏覽器一次運行中具有定義的多的能力,這仍然工作我的conf使用Chrome,IE11和edoge瀏覽器的桌面和一個android?或者,Android需要成爲唯一定義的瀏覽器/平臺? –

+0

@NicolePhillips好問題!我認爲即使在使用多種功能的情況下也應該可以工作(儘管未經過測試)。 – alecxe

+0

我會在早上給它一個鏡頭,讓你知道它是如何去的,一如既往,謝謝你! –

相關問題