【问题标题】:Protractor: Storing URL in a variable to parse returns "undefined"量角器:将 URL 存储在要解析的变量中返回“未定义”
【发布时间】:2015-05-05 23:45:50
【问题描述】:

我一直在尝试获取当前的 URL,并希望删除部分 URL 以在另一种方法中使用。 我尝试了很多方法,我在网上看到的一种解决方案建议使用beforeEach() 方法。我一直在尝试这个,无论如何,this.urlString 总是返回未定义。

这是我目前拥有的。我一定遗漏了一些关于为什么返回未定义但我无法弄清楚的东西。

this.urlString;

beforeEach(function () {
  mainPO.navigateHome();
  mainPO.clickCurrent();

  browser.getCurrentUrl().then(function (url) {
    return this.urlString = url;
  });
});

console.log(this.urlString)

我想要做的是将 URL 存储在一个字符串中,然后解析该字符串以删除 URL 的“.com”之前的所有内容,这样我就可以获取该字符串并将其插入另一个 URL 以爬取到另一个链接.

【问题讨论】:

    标签: angularjs protractor angularjs-e2e e2e-testing


    【解决方案1】:

    为了将 URL 值作为字符串获取,您需要解析browser.getCurrentUrl() 函数调用返回的promise

    beforeEach(function () {
      mainPO.navigateHome();
      mainPO.clickCurrent();
    
      this.urlString = browser.getCurrentUrl();
    });
    
    this.urlString.then(function (url) {
        console.log(url);
    });
    

    【讨论】:

    • 如果我使用这个,我可以调用 this.urlString 来检索 URL 吗?还是我需要将其粘贴在另一种方法中才能调用?本质上,我使用 url.split(".com").pop() 来删除 .com 和 URL 中之前的所有内容,而不是 console.log(url),因此我可以将结果插入另一个对象。跨度>
    • @user249656 是的,但您应该始终记住,urlString 会返回一个需要解决的承诺。
    • 谢谢!您是否有任何文章/链接解释承诺等,以便我更好地理解它们?
    • @user249656 当然,我觉得这个介绍不错:github.com/angular/protractor/blob/master/docs/control-flow.md.
    • console.log(url) 也未定义。
    猜你喜欢
    • 2021-10-01
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多