量角器:在executeAsyncScript中传递变量'url Json file'

时间:2017-12-13 10:20:16

标签: javascript protractor

我是量角器的新手,我希望能在如何在量角器测试中使用的executeAsyncScript函数中传递变量方面提供帮助。

我正在测试一个应用程序,我需要一个包含标签翻译(法语和英语)的JSON文件,起初我可以从第一个json文件中正确地恢复用户的语言(让我们调用getUser.json )。其次依赖于用户语言我需要动态传递url以获取标签json文件(让我们调用lang_fr.json和lang_en.json):

based on the code,第三个例子我可以访问任何json文件。

  browser.executeAsyncScript(function() {
        var callback = arguments[arguments.length - 1];
        var xhr = new XMLHttpRequest();
        var url='path_to/getUser';
        xhr.open("GET", url , true);
        xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && xhr.status == 200) {
            callback(xhr.responseText);
        }
        };
        xhr.send('');
    }).then(function(str) {
        browser.params.lang=JSON.parse(str)['userLanguage'];
        if(JSON.parse(str)['userLanguage']==='fr')
        browser.params.url='path_to/lang_en.json';
        else
        browser.params.url='path_to/lang_fr.json';
        UserLanguage.UserLanguage(); /// excuting the fct that call the second jsonfile 
现在我需要传递browser.params.url executeAsyncScript来获取json文件标签所以我在另一个导出文件中执行此操作:

var url = browser.params.url;
browser.logger.info(browser.params.url); // The url depending the user language is correctly displayed

browser.executeAsyncScript(function() {
      var callback = arguments[arguments.length - 1];
      var xhr = new XMLHttpRequest();
      xhr.open('GET', url /*here to pass the url depending the user language*/, true);
        xhr.onreadystatechange = function() {
          if (xhr.readyState == 4) {
            callback(xhr.responseText);
          }
        }
        xhr.send()
      }, url/*passed on second argument*/).then(function(jsonlabel) {
        /// rest of the code to resolve the labels

我知道网址没有定义

Error console]

我检查了以下示例:

Executing Async Javascript in Protractor http://blog.ng-book.com/executing-async-javascript-in-protractor/

WebDriver executeAsyncScript vs executeScript

但在每个例子中我都有错误。

那么请你提供你的建议如何正确传递剧本中的可变网址?请注意,当我将绝对文件路径设置为有效时:

 xhr.open('GET', 'path_to/lang_en.json', true);

但我需要动态传递它。希望它清楚,我在这里了解更多细节。

1 个答案:

答案 0 :(得分:0)

所以我尝试将变量url放在typedef Eigen::SparseMatrix<double, RowMajor, long int> SMatrixXd; 上并且它有效!

function(){