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

时间:2016-12-19 17:18:01

标签: javascript selenium selenium-webdriver selenium-rc e2e-testing

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

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

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

我还尝试execute() eval()运行JavaScript来捕获窗口然后评估其轴值,因为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全局变量。 (是的,看了所有相关帖子后表明用硒执行js)

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

*同样重要的是:

我使用wd.js作为网络驱动器 https://github.com/admc/wd

1 个答案:

答案 0 :(得分:1)

Alllrighty。我找到了解决方案!它很直接。我认为这只是因为wd.js始终使用promise链,所以我无法输出任何只有eval的东西,但我必须添加asserter。所以以下工作完美。

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

如果你想看看window.pageYOffset中的值是什么,只是手动失败。

带我两天了解这件事。希望它也节省你的时间。