2016-08-02 12 views
1

は、ElementFinderインスタンス上で利用可能getInnerHtml() methodがあります:getInnerHtml()メソッドを使用する必要がある場合分度器で

var elm = element(by.id("myid")); 
expect(elm.getInnerHtml()).toEqual("test"); 

私はそれはしかしAPI listで文書が表示されません。 getInnerHtml()ではなくgetText()の優先されなければならないとき

現実世界のユースケースは、セレンでテストするWebアプリケーションでありますか?


私もselenium 2.53 has deprecated this method次を参照してください。

はそれが表示され、WebElement#getInnerHtml()WebEleemnt#getOuterHtml()

を非推奨、分度器は、ドキュメントでそれを言及していない理由です。

+0

getInnerHTMLは 'HTML'コンテンツも内側タグが、'のgetText() 'だけ' Text'ない 'HTMLコードを返しますが返されそのタグの中にある。 – Paras

+0

@pArAsコメントをいただきありがとうございます。私はその違いについて尋ねていません。私は実際にこのメソッドを2つの主な理由で使用する必要があるときについて質問しています。なぜそれが非難されたのかを理解する、[このeslintルールを実装する](https://github.com/alecxe/eslint-plugin-protractor/issues/47 )この規則を無効にし、実際には 'getInnerHtml'または' getOuterHtml'が必要なときに、より多くの情報を提供します。 – alecxe

+1

個人的には、テストケースで実際に使用したことはありません。私はロケータに問題があったときだけ 'getInnerHtml()'や 'getOuterHtml()'を使用しましたが、私は最終的に正しい要素である – Gunderson

答えて

2

getText()は要素の開始タグと終了タグの間にテキストを取得し、getInnerHtml()は要素のHTML構文を取得します。

<a><span>link text</span></a> 

getInnerHtml

  • 設定または

    <span>link text</span> 
    
  • 要素の子孫を記述するHTML構文を取得します - :

    は、たとえばHTMLを持っているとa上の両方のアクションを実行できます

これはDOMの解析とシリアライズ仕様の一部です。

getText()

  • 設定またはオブジェクトの開始タグと終了タグの間のテキスト

    link text 
    

説明を取得します。我々はgetText()を使用している場合、それはなります正確なテキスト(例:link text)のみを返します。getInnerHtml()はHTML構文、つまり<span>link text</span>を返します。

これは基本的に要件に依存します。

  • HTML解析でテキストを取得する必要がある場合は、getInnerHtml()を使用します。

  • 要素テキストのみを取得する必要がある場合は、getText()を使用します。

しかし、私は個人的にgetAttribute('textContent')を使用することができ、また、その後、原因HTMLまたはその他の理由でいくつかの設計問題への要素のテキストを返しませんgetText()の問題に直面したいくつかの時間。

この場合、getInnerHtml()を使用してテキストを取得する必要がありますが、a要素の代わりにspan要素でこの操作を実行する必要があります。

: - getInnerHtml()getAttribute("innerHTML")として使用することができること

+0

が完全に削除されていますが、代わりに何を使用する必要がありますか? – jemiloii

+1

@JemiloII代わりに '.getAttribute(" innerHTML ")'を使うことができます –

関連する問題