一尘不染

从量角器访问窗口对象/浏览器范围

selenium

我正在使用量角器进行测试,但是似乎无法访问JS“窗口”对象。我什至尝试在我的html文件中添加一个包含如下内容的标签

var a = window.location;

然后尝试Expect(a),但我无法使其正常工作,我总是会得到未定义的引用…

我应该如何处理访问浏览器范围内的变量?


阅读 276

收藏
2020-06-26

共1个答案

一尘不染

假设您使用的是最新版本的量角器,假设> = 1.1.0,希望> = 1.3.1

尝试直接从Protractor访问浏览器端JS代码是行不通的,因为Protractor在NodeJS中运行,并且每个浏览器端的代码都是通过Selenium
JsonWireProtocol执行的。

没有进一步的细节,一个工作示例:

browser.get('https://angularjs.org/');

一线承诺,直到今天,决心 '1.3.0-rc.3'

browser.executeScript('return window.angular.version.full;');

鉴于量角器的期望为您解决了承诺,您可以在期望语句中直接使用它:

expect(browser.executeScript('return window.angular.version.full;')).
  toEqual('1.3.0-rc.3');

较长的示例在不expect解决对您的承诺的情况下传递了函数而不是字符串。即,为了获得更多控制权并为结果做一些花哨的事情。

browser.driver.executeScript(function() {
    return window.angular.version.full;
}).then(function(result) {
    console.log('NodeJS-side console log result: ' + result);
    //=> NodeJS-side console log result: 1.3.0-rc.3
});
2020-06-26