我的自动化测试需要在Chrome桌面版和Chrome移动版中运行。我的一项测试要求桌面版点击仅在悬停时出现的元素,但是,移动版不需要悬停元素始终可见。我遇到麻烦找到一种方法告诉在ipad上运行的测试忽略悬停步骤,只需单击按钮。我可以为ipad和单独的spec文件创建一个方法,但如果有一个简单的修复,我不想浪费我的时间。
答案 0 :(得分: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操作,请参阅: