2011-08-04 12 views
0

私はほぼ20万のhtmlページを持っていて、どのブラウザでも各htmlがレンダリングされる高さと幅を把握する必要があります。私はおおよその数字が必要です。プログラムでC#でこれをどのように行うことができますか?は、プログラムでhtmlがブラウザでレンダリングされるC#でのレンダリングの高さと幅を把握します。

+0

まだあなたの[前の質問](http://stackoverflow.com/questions/6933639/use-c-to-trigger-java-script-code-inside-an-html-page)をbruiteforceしようとしていますか? – R0MANARMY

答えて

2

C#ブラウザの内部では実行されません。ブラウザで指定されたHTMLページがレンダリングされる幅と高さを試して判断するためには使用しないでください。さらに、異なるブラウザが異なるフォントをサポートしたり、同じ内容をわずかに異なるようにしたり、異なる表示関連の設定で構成されたりする可能性があるため、「任意のブラウザ」に対する回答はありません(ほとんどのブラウザでは、サイズは必要に応じて上または下になりますが、最終的なレンダーサイズにはもちろん影響します)。

  1. は、ドキュメントの現在のサイズを計算することができのJavaScriptスニペット思い付く:

    一般的に、しかし、私はあなたのような何かを示唆しています。

  2. C#(またはJava、C、bashなど)プログラムを作成して、スニペットを200,000ページごとに追加します。
  3. SeleniumやWebdriverなどのブラウザベースのテストハーネスを使用して、200,000ページごとに読み込み、JavaScriptスニペットから結果を抽出し、便利な場所にログアウトします。
  4. 必要に応じて、ブラウザごとに手順3を繰り返して、気になるブラウザごとに幅と高さを取得できます。

編集:明らかに、WebdriverとSeleniumは同じことになります。いつそれは起こったの?

+0

JavaScriptを追加する必要があります。ありがとう – iCode

0

これはかなり簡単です。少なくともHTML要素の高さと幅を知るには、HTMLパーサと十分なレンダリングエンジンを書くだけです(任意の画面サイズ、フォント設定の場合)。明らかに、CSSパーサとエンジンが必要です。どのブラウザでも知りたいので、それぞれをエミュレートするモードが必要です。測定しようとしているHTMLページのDOMを直接取得できない場合は、ページに表示されている値を取得するためにJavaスクリプトエンジンが必要です。

ブラウザでHTMLを実行し、java-scriptを使用して値を取得することもできます。しかし、これは.NETにはありません。あなたが好きなら、あなたはASP.NETページにデータをポストすることができます。

また、以前の質問に対する回答として推奨されるツールのいずれかを使用することもできます。

+0

私はほとんどすべての主要なブラウザのすべての癖のためのCSSパーサー、レイアウト/レンダリングエンジン、CSSサポート、JavaScriptインタプリタ、およびエミュレーションモードを完全に実装することを "かなり簡単な"作業と考えていません。 – aroth

+0

私はarothに同意します!それは永遠に取るよ! – iCode

+0

私は彼が皮肉っていると信じている – Jason

関連する問題