量角器:如何获得当前的浏览器宽度?

时间:2016-11-11 03:26:22

标签: javascript selenium jasmine protractor

我希望根据浏览器是处于“桌面”模式(默认情况下)还是“移动”模式来运行一些帮助函数代码,某些规范只需要移动设备。高度始终为800,但宽度可以是600或1280.

login: function() {
  var self = this;
  var browserSize = browser.manage().window().getSize().then(function(size) {
    // size is still an unresolved promise ;.;
    return size;
  });

  // Go to login page
  browser.get(browser.baseUrl); // Will redirect authed users to the application

  // If not at the login page, logout first
  if (browser.getCurrentUrl() !== browser.baseUrl) {
    if (browserSize.width == 600) {
      self.mobileLogout();
    } else {
      self.desktopLogout();
    }
  }

  self.loginPage.login();
}

如何解析承诺getSize返回或以其他方式确定浏览器宽度?

5 个答案:

答案 0 :(得分:3)

你非常亲密!这对我来说很有用:

var browserSizeOfMe = browser.driver.manage().window().getSize().then(function(size) {
    console.log(" BROWSER SIZE "+ JSON.stringify(size) );
    return size;
});

答案 1 :(得分:1)

您不必通过浏览器窗口的大小来解决区分移动和桌面判断的问题。相反,您可以通过getCapabilities()访问已配置的功能,请参阅以下示例:

答案 2 :(得分:0)

您可以使用此脚本获取浏览器宽度

var width = window.innerWidth || document.body.clientWidth;

但我认为这不能解决你的问题

答案 3 :(得分:0)

这个功能确实有太多的承诺。我必须嵌套需要宽度和当前网址,以便在正确的时间定义和使用。

大致正常工作的代码:

login: function() {
  var self = this;

  browser.get(browser.baseUrl);

  browser.getCurrentUrl().then(function(url) {
    if(url !== browser.baseUrl) {
      browser.manage().window().getSize().then(function(size) {
        if (size.width == 600) {
          self.mobileLogout();
        } else {
          self.desktopLogout();
        }
      }
    }

    self.loginPage.login();
  }
}

答案 4 :(得分:-1)

可以使用“viewport”完成,看一下以下链接

http://www.w3schools.com/css/css_rwd_viewport.asp