并非所有自动化测试在不同浏览器中都运行相同

时间:2015-11-13 20:53:41

标签: angularjs selenium-webdriver automation protractor

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

1 个答案:

答案 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操作,请参阅: