2017-02-02 16 views
1

私がしようとしているのは、テキストを取り込むロケータを変更する場合を除いて、要素からテキストを取得するのと同じ仕事を行うために使用できる関数を1つ持っています。evalを使用せずに要素参照を変更する

const firstNameError = by.id('firstNameError'); 
const lastNameError = by.id('lastNameError'); 
const dateError = by.id('dateError'); 
const emailError = by.id('emailAddressError'); 


this.checkWarning = function(locator) { 
    return browser.findElement(eval(locator + 'Error')).getText(); 
}; 

上記のように、現在動作していますが、私はむしろ避けたいと思うeval関数を使用しています。ですから、私は.checkWarningを呼び出して 'firstName'を渡します。たとえば、firstNameError constを使用します。

私はロケータのリストを持っているし、私はロケータ例えば

const locatorValues = 
{ 
    'firstName': 'firstNameError', 
    'lastName': 'lastNameError', 
    'date': 'dateError', 
    'email': 'emailError', 
}; 

this.checkWarning = function(locator) { 
    return browser.findElement(locatorValues[locator]).getText(); 
}; 

しかし、再びそれは私の仕事になり得るために基づいてリストにアクセスする機能をammendedた場所私は以下のようなものを実装しようとしていますその周りの評価をラップする必要があります。 .checkWarningに渡すロケータに基づいて定数を参照するのに最適な方法は何ですか?あなたのbrowser.findElement関数はこのように見えた場合

おかげ

+0

あなたは ''ウィンドウ[localtor + 'エラー']見つけることを試みること(または – Arthur

+0

'const'のように見えますが、' window'にはありません。私は間違っていた – Arthur

答えて

1

querySelector()は、DOMのAPIメソッドは、この問題を解決:

findElement = function(loc){ 
    return document.querySelector("#" + loc); 
}; 
関連する問題