使用 Selenium JavaScript 网络驱动程序检查视图是否位于屏幕顶部

Check if the view is on the top of the screen with Selenium JavaScript web driver

我目前正在使用 https://github.com/admc/wd/blob/master/doc/api.md Selenium 网络驱动程序来测试网站。我想简单地检查一下我的视图是否在整个屏幕的顶部。

我已经尝试使用 isDisplay()getLocationInView 来达到这个目的。

但是,它们要么作为元素的绝对位置可用,要么根据元素和 html 页面级别显示,而不是实际视图本身。

我还尝试了 execute() eval() 到 运行 JavaScript 来捕获 window 然后评估它的轴值,因为 Selenium 是 运行宁一个真正的浏览器 (Chrome).

...execute("window", function(error, result) { console.log(result) };
...execute("console.log(window)", function(error, result) { console.log(result) };
...execute("return window", function(error, result) { console.log(result) };

但是,我只能从这些语句的结果中得到 null

我想我一定是错过了一个功能(尽管我阅读了他们的 API 文档超过 3 遍)。

我认为在测试浏览器中触发 JavaScript 变量,运行 获取轴值的快速函数,并将其保存到 var 中是一个可行的解决方案。

但是,我什至无法找到仅获取 window 全局变量的有效解决方案。 (是的,在查看了所有相关的 post 指示关于使用 selenium 执行 js 之后)

*请注意,是的,executeScript 不再可用,至少对于我现在使用的 Selenium 而言(根据我的 package.json 的最新版本)。

*另外重要提示:

我使用wd.js作为网盘 https://github.com/admc/wd

好的。我找到了解决方案!它非常简单。我认为这只是因为 wd.js 一直在使用 promise 链,所以我无法仅使用 eval 输出任何内容,但我必须添加断言器。所以以下工作完美。

browser.eval("window.pageYOffset")
      .should.eventually.equal('0')
      .nodeify(done);

如果您想查看 window.pageYOffset 中的值是什么,只需手动使其失败。

用两天的时间来理解这个东西。希望它也能节省您的时间。