使用 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
中的值是什么,只需手动使其失败。
用两天的时间来理解这个东西。希望它也能节省您的时间。
我目前正在使用 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
中的值是什么,只需手动使其失败。
用两天的时间来理解这个东西。希望它也能节省您的时间。