2

Selenium Remote Control には、現在のページのソースを文字列として返す「get_html_source」というメソッドがあります。

私の知る限り、この方法は Firefox と Safari のすべてのケースで機能します。しかし、Internet Explorer で呼び出すと、正しくないソースが返されます。

これが Selenium や Internet Explorer のバグなのか、修正があるのか​​、誰か知っていますか?

4

2 に答える 2

2

get_html_source がブラウザーの innerHTML プロパティを使用していることは 99% 確信しています。InnerHTML はブラウザのドキュメントの内部表現を返しますが、プラットフォーム間で常に一貫性がなく、「不安定」でした。

ページの body タグに次の onload 属性を一時的に追加することで、これをテストできます。

onload="var oArea = document.createElement('textarea');oArea.rows=80;oArea.cols=80;oArea.value = document.getElementsByTagName('html')[0].innerHTML;document.getElementsByTagName('body')[0].appendChild(oArea)"

これにより、ドキュメントの innerHTML を含むテキスト領域がページの下部に追加されます。同じ「間違った」HTML ソースが表示された場合は、IE が原因であることがわかります。

可能な回避策は、有効なマークアップを求めている場合、HTML Tidy またはその他のクリーナーを介してソースを実行することです。ブラウザー間で一貫したレンダリングを提供するものは何も知りません。

于 2008-09-24T04:03:27.597 に答える
1

ありがとうアラン。これは別のブラウザーの innerHTML の実装に問題があることがわかりました。

リストに関係するタグの場合

  • 、終了タグはオプションです。

    safari や firefox などのブラウザーは、それぞれの innerHTML メソッドで終了タグを取得しますが、Internet Explorer の innerHTML メソッドはそれらを無視します。

    リストは構造化されているため、たとえば

    • りんご

    HTMLソース文字列の正規表現置換でうまくいくはずです。

  • 于 2008-09-26T19:37:31.210 に答える