Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过字符串引用变量_Javascript_Protractor - Fatal编程技术网

Javascript 通过字符串引用变量

Javascript 通过字符串引用变量,javascript,protractor,Javascript,Protractor,目标:通过将字符串作为变量计算,在我的conf.js文件中遍历电子邮件 我尝试过使用eval(字符串名),窗口[字符串名],以及此[字符串名] 我会遇到如下错误: 意外数字 每个键必须是多个字符串;没有定义 等等。让字符串像变量名一样运行的正确方法是什么?问题出现在for循环中倒数第二行。非常感谢您的洞察力 在我的conf.js文件中,我的电子邮件地址存储如下: // conf.js exports.config = { framework: 'jasmine', seleniumAdd

目标:通过将字符串作为变量计算,在我的conf.js文件中遍历电子邮件

我尝试过使用
eval(字符串名)
窗口[字符串名]
,以及
此[字符串名]

我会遇到如下错误:

意外数字

每个键必须是多个字符串;没有定义

等等。让字符串像变量名一样运行的正确方法是什么?问题出现在for循环中倒数第二行。非常感谢您的洞察力

在我的conf.js文件中,我的电子邮件地址存储如下:

// conf.js
exports.config = {
  framework: 'jasmine',
  seleniumAddress: 'http://localhost:4444/wd/hub',
  params: {
    login: {
      username: '*********',
      password: '*********.'
    },
    website: {
      url: '*********',
    },
    testEmails: {
      // First address
      1: '*****@gmail.com',

      // Second address
      2: '*****@gmail.com',
    }
  }
}
spec.js

describe('Testing |', function() {

  var initialLink = ('https://').concat(browser.params.website.url);

  function loadPage(a) {
    browser.get(a);
  }

  function login(a, b) {
    element(by.model('login.userName')).clear().sendKeys(a);
    element(by.model('login.password')).clear().sendKeys(b);
    element(by.id('btnLogin')).click();
  }

  function send(a, b){
    element(by.id('btnCompose')).click();
    element(by.id('toCtrl_new')).sendKeys(a);
    element(by.id('subjectCtrl')).sendKeys(b);

    browser.driver.sleep(2000);
    element(by.id('btnCancel')).click();
    browser.waitForAngular();
  }

  it('should send emails', function() {
    loadPage(initialLink);
    login(browser.params.login.username, browser.params.login.password);
    element.all(by.repeater('module in ui.forUser')).get(3).click();

    for(var i = 1; i < 38; i++){
      var prefix = "browser.params.testEmails.";
      var complete = prefix.concat(i);
      var toWhom = eval(complete);
      send(toWhom, 'Testing');
    }

  });

});
description('Testing |',function(){
var initialLink=('https://').concat(browser.params.website.url);
功能加载页(a){
获取(a);
}
功能登录(a、b){
元素(by.model('login.userName')).clear().sendKeys(a);
元素(by.model('login.password')).clear().sendKeys(b);
元素(by.id('btnLogin'))。单击();
}
功能发送(a、b){
元素(by.id('btnCompose'))。单击();
元素(by.id('toCtrl_new')).sendKeys(a);
元素(by.id('subjectCtrl')).sendKeys(b);
浏览器.驱动程序.睡眠(2000年);
元素(by.id('btnCancel'))。单击();
browser.waitForAngular();
}
它('应该发送电子邮件',函数(){
加载页面(初始链接);
登录(browser.params.login.username、browser.params.login.password);
element.all(by.repeater('ui.forUser中的模块')).get(3).单击();
对于(变量i=1;i<38;i++){
var prefix=“browser.params.testEmails。”;
var complete=前缀concat(i);
var toWhom=评估(完整);
发送(toWhom,“测试”);
}
});
});

以下是您可以执行的操作:

for (key in browser.params.testEmails) {
  var toWhom = browser.params.testEmails[key];
  send(toWhom, 'Testing');
}

以下是您可以做的:

for (key in browser.params.testEmails) {
  var toWhom = browser.params.testEmails[key];
  send(toWhom, 'Testing');
}

哇,这正是我需要的,谢谢丹尼尔!如果您可以稍微调整一下,
testEmails[key]
应该是
browser.params.testEmails[key]
。没问题。修正了这个错误哇,这正是我需要的,谢谢丹尼尔!如果您可以稍微调整一下,
testEmails[key]
应该是
browser.params.testEmails[key]
。没问题。修正了那个错误