0
目的:文字列を変数として評価して、conf.jsファイルの電子メールを繰り返し処理します。文字列を介して変数を参照する
私はeval(string name)
,window[string name]
、およびthis[string name]
を使用しようとしました。
は、私のようなエラーが出る:
予想外数。
各キーは文字列の数でなければなりません。定義されていない。
など。変数名のように文字列を実行させる適切な方法は何ですか?問題は、forループの2行目から最後の行までです。あなたの洞察に感謝します!私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');
}
});
});
うわー、ちょうど私が必要としていたもの、ありがとうダンiel! 'testEmails [key]'は 'browser.params.testEmails [key]'でなければなりません。 – bdf7kt
問題ありません。そのミスを修正した – DanielR