2017-10-19 8 views
0

分度器を使っていくつかのE2Eテストを書いています。 1つのテキストボックスがあります。厳密なxpathを使用することに本当に困難があります。.//*[@id='_euj7snvsk'] 'のテキストが各実行時に変更されるため、動作しません。 IDが変数である分度器の要素

<div class="kf-input" _ngcontent-c17=""> 
 
<!----> 
 
<input id="_9b5w9rlmb" class="input kf-input-valid ng-dirty ng-valid ng-touched" _ngcontent-c17="" tabindex="0" placeholder="e.g. My living room project" required="" pattern="^[ A-Za-z0-9']{3,40}$" type="text"/> 
 
<!----> 
 
<!----> 
 
<!----> 
 
</div>
は、プレースホルダと、クラスではなく、ゼロの成功で '取得' しようとしました:

はここで周囲のエントリーです。誰かが将来の道を提案することができますか? ありがとう David

+0

IDの値が変更され、ここで、少なくとも3種類の変更IDを投稿してくださいこれにより、ここでのパターンは何か?。 –

答えて

0

はこれを試してみてください:

//assign the variable id name in a string and use it in the locator 
var idString = '_9b5w9rlmb'; 
var inputElement = element(by.id(idString)); 
0

CSSセレクタで要素を取得しようとしましたか? Check out all possibilities here

ここにあなたのケースのための私の提案:

element(by.css('div.kf-input div.input.kf-input-valid')).sendKeys('Some Text'); 

または短い:sendKeys()は、あなたがテキストを入力する前提であることを

$('div.kf-input div.input.kf-input-valid').sendKeys('Some Text'); 

は注意、。あなたの質問から、あなたがフィールドでやりたいことははっきりしていません。

また、テキストボックスを識別するための第2クラスは、必要でない可能性があり、コードから変更される可能性があります。だから、2番目のクラスが一意にあなたのテキストボックスを識別する必要がない場合、それなしで行く。

一般に、XPathではなくCSS-Locatorsを使用することをお勧めします。 XPathのパフォーマンスは低く、長期的には維持するのが難しいです。

+0

ありがとうございますErnst - はい、あなたは大丈夫です - 実際にテキストを送る必要があります。 –

+0

@David Redmayne。私が正しく期待してうれしい。私の提案はCSSセレクタを使用して動作しましたか? –

+0

@DavidRedmayne答えがあなたのために働いた場合は、それを正しいものとしてマークすることが大切です。それがうまくいかない場合は、どうすれば改善できるか教えてください。 –

関連する問題