Protractor:如何获取当前浏览器的宽度?

3

我希望有一些辅助函数的代码可以根据浏览器是否处于“桌面”模式(默认模式)或“移动”模式(某些规格要求仅适用于移动设备功能)运行。高度始终为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返回的promise或以其他方式确定浏览器的宽度?

把整个代码块包裹在 Promise 的 .then 中?这是我在测试中所做的。 - Daniel
5个回答

5

你非常接近了!这对我现在起作用:

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

旁注 - 这在使用Appium与Android设备上不起作用(可能在iOS上也不起作用,但我还没有确认)。browser.driver.manage()命令失败,日志显示该命令不受Android支持。 - Kyle Pittman

2

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


0

这个函数确实有太多的承诺。我不得不嵌套需要宽度和当前URL,以便在正确的时间定义和使用。

大致的工作代码:

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();
  }
}

0

你可以使用这个脚本来获取浏览器宽度

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

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


-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接