javascript - 使用 Intern 功能测试元素是否可见(没有元素覆盖)

标签 javascript intern

我目前正在使用 JavaScript 框架 Intern 来测试我的网站,我想确保特定元素真正可见。 Intern 目前有一个选项“isDisplayed”,其中一半是执行此操作的。但我还想做的是检查它是否对用户真正可见,并且页面上的任何其他元素没有被覆盖(可能是 z-index 问题)等。

有人有建议吗?

提前致谢。

最佳答案

通常,最好专注于单元测试,并确保您期望设置的样式能够从您用来执行此操作的实用程序/辅助函数正确返回。否则,您最终将测试您可能无意的东西,例如浏览器本身计算样式的功能。因此,在很多情况下这都是不好的做法。

但是,如果您确实需要此功能,例如在针对客户网站测试第 3 方 JavaScript 库时,实习生的 Leadfoot 会提供 .execute()您想要使用的方法。

示例:

return this.remote      // represents the browser
    .get('mysite.com')  // navigate to a page
    .execute(           // send a callback to the browser
        function (selector) {
            var elem = document.querySelector(selector),
                result;
            // collect some data for analysis...
            result = getComputedStyle(elem).zIndex;
            return result;
        },
        ['div']  // arguments to send to the remote callback
    )
    .then(
        function (zIndex) {
            // analyze the data and make assertions about it...
            assert(zIndex > 999);
        }
    );

请注意:这很棒,但要小心。大多数测试在 Node.js 内部运行,但 .execute() 的回调不会运行,因此它无法访问任何先前定义的变量等。

至于确定元素何时对用户真正可见的策略,这是非常主观的,但是getBoundingClientRect()将成为您确定一个元素何时与另一个元素重叠的 friend 。这里有很好的技术:Determine visibility / real z-index of html elements

关于javascript - 使用 Intern 功能测试元素是否可见(没有元素覆盖),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28214170/

相关文章:

javascript - 我们如何使用 InternJS 对 Chrome 打包应用程序(例如 Chromebook 应用程序)执行自动化测试

javascript - 在本地主机上针对静态 Web 应用程序运行实习生功能测试

javascript - 无法访问 Javascript 数组中的变量。 Console.log 说未定义

javascript - jQuery $.extend() - 如果新成员不存在,如何不向第一个对象添加新成员?

Selenium 测试理解

javascript - Intern/Leadfoot 超时功能的区别

javascript - 您可以使用实习生在测试中运行测试吗?

javascript - 在同一个异步函数/定时器重置中使用多个setTimeout

javascript - polymer 核心子菜单不显示子菜单,仅显示其项目

javascript - 将方法应用于javascript中的对象和私有(private)变量