在 Protractor 中,全局可用的browser对象具有两种方法:

  • getLocationAbsUrl()


  • getCurrentUrl()



  • 两者之间的区别还不是很明显。到目前为止,我仅使用getCurrentUrl()

    我们什么时候应该使用getLocationAbsUrl()?它涵盖哪些用例?

    我无法记忆起其他 Selenium 语言绑定(bind)中类似于getLocationAbsUrl()的任何内容。它看起来很像 Protractor 。

    最佳答案

    GitHub的getCurrentUrl 源码

    webdriver.WebDriver.prototype.getCurrentUrl = function() {
      return this.schedule(
          new webdriver.Command(webdriver.CommandName.GET_CURRENT_URL),
          'WebDriver.getCurrentUrl()');
    };
    

    使用schedule()-> command()包装器来解析WebDriver.getCurrentUrl()中的 promise

    GitHub的Protractor.getLocationAbsUrl 源码
    functions.getLocationAbsUrl = function(selector) {
      var el = document.querySelector(selector);
      if (angular.getTestability) {
        return angular.getTestability(el).
            getLocation();
      }
      return angular.element(el).injector().get('$location').absUrl();
    };
    

    只需围绕$location.absUrl()进行包装,然后等待 AngularJS 库加载

    当前URL与绝对URL

    指定的应用网址:
    http://www.example.com/home/index.html#/Home
    

    当前URL解析为更多URI
    /home/index.html#/Home
    

    绝对网址解析为
    http://www.example.com/home/index.html#/Home
    

    您何时要使用绝对URL:您想要绝对URL,而不是本地导航(URI),而要使用完整域URL。
  • 如果您的应用程序调用了当前URL,则您的测试应调用getCurrentUrl()
  • 如果您的代码请求获取绝对URL,则您的测试应调用getLocationAbsUrl()
  • 关于javascript - getLocationAbsUrl和getCurrentUrl,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30790032/

    10-10 13:27