2017-04-06 55 views
0

在我的应用程序中,我用来更改一个变量以更改为测试模式。量角器 - 我可以使用url参数来设置本地存储吗?

现在,我改变了一点,以便我可以添加一个URL参数(test=true)来设置我的应用程序在测试时与模拟后端以及所有必需的东西一起运行。

一切工作正常。

它的工作方式是,如果URL存在,我设置一个本地存储项目(testing: true),如果这存在于本地存储中,则我的变量将设置为true,这意味着我处于测试模式。

然而,量角器,甚至改变基本URL包括PARAMS后,localStorage的项目不被设置和我的应用程序是不是在测试模式。

我在做什么错在这里?

这里的配置文件:

exports.config = { 
    specs: ['tests/e2e/*.js'], 
    baseUrl: "http://localhost:8100/?test=true", 
    seleniumAddress: 'http://127.0.0.1:4444/wd/hub', 
    framework: 'jasmine2', 
    defaultTimeoutInterval: 120000, 
    onPrepare: function() { 
     browser.driver.get(browser.baseUrl); 

     var SpecReporter = require('jasmine-spec-reporter'); 
     jasmine.getEnv().addReporter(new SpecReporter({ 
      displayStacktrace: false, 
      displaySuccessful: true, 
      displayFailed: true 
     })); 

     var jasmineReporters = require('jasmine-reporters'); 
     var junitReporter = new jasmine.JUnitXmlReporter('tests/e2e/'); 
     jasmine.getEnv().addReporter(junitReporter); 
    } 
}; 

和设置的localStorage项目的代码如下:

<script> 
     function getParameterByName(name, url) { 
      if (!url) { 
       url = window.location.href; 
      } 
      name = name.replace(/[\[\]]/g, "\\$&"); 
      var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), 
       results = regex.exec(url); 
      if (!results) return null; 
      if (!results[2]) return ''; 
      return decodeURIComponent(results[2].replace(/\+/g, " ")); 
     } 

     var isTesting = getParameterByName('test'); 

     if (isTesting === "true"){ 
      debugger 
      localStorage.setItem('testing', true) 
     } else { 
      localStorage.removeItem('testing') 
     } 

     window.__TESTING__ = localStorage.getItem('testing'); 
     console.log (window.__TESTING__); 
</script> 

感谢您的帮助

回答

1

您可以直接更改的值使用

browser.executeScript("window.localStorage.setItem('testing',true)"); 
从量角器本地存储

添加上述声明量角器配置文件的onPrepare方法中。

+0

谢谢,我会尽快尝试此 – Nick

相关问题