Access window object / browser scope from protractor

后端 未结 1 1050
没有蜡笔的小新
没有蜡笔的小新 2020-12-09 16:41

I\'m running tests with protractor, but it seems impossible to access the JS \'window\' object. I even tried adding a tag in my html file that would contain something like

相关标签:
1条回答
  • 2020-12-09 16:59

    Assuming you are using a recent version of Protractor, let's say >= 1.1.0, hopefully >= 1.3.1

    Attempting to access Browser side JS code directly from Protractor won't work because Protractor runs in NodeJS and every Browser side code is executed through Selenium JsonWireProtocol.

    Without further detail, a working example:

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

    One-liner promise that, as of today, resolves to '1.3.0-rc.3'

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

    You can use it directly in an expect statement given Protractor's expect resolves promises for you:

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

    Longer example passing a function instead of a string plus without expect resolving the promise for you. i.e. for more control and for doing some fancy thing with the result.

    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
    });
    
    0 讨论(0)
提交回复
热议问题