Selenium と chromedriver を pyvirtualdisplay で使用して、Ubuntu サーバー (AWS-EC2) で HTML ページをレンダリングしようとしています。HTML ページが Windows PC で表示されるように表示されません。Webdriver から取得したスクリーンショットを添付します。
Windows PC でレンダリングされた画像
pyvirtualdisplay を使用して Ubuntu サーバーでレンダリングされた画像
私のpythonコードの実行中に行われた基本的な構成(pythonコードのスニペット)-
display_width=1366
display_height=768
解像度は私の Windows PC と同じです。
UserAgent="Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0"
これは標準のユーザー エージェントです。
def create_driver(executable_path,extension_path):
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--user-agent='+UserAgent)
driver = webdriver.Chrome(executable_path=executable_path, chrome_options=chrome_options)
driver.set_window_size(display_width,display_height
driver.delete_all_cookies()
return driver
このコードはドライバーを作成します
display = Display(visible=0, size=(display_width, display_height))
display.start()
driver = create_driver(executable_path,extension_path)
input_html_file='SAMPLE'
driver.get('file://///var/tmp/' + input_html_file)
ドライバーで開いた保存済みの HTML ファイルがあります。これは SAMPLE です。
Windows で開いたのと同じ HTML です。スクリーンショットの画像でわかるように、「91 の販売者レビュー」というテキストが新しい行に折り返されます。このブロックと他の領域の高さの計算に取り組んでいるため、結果に影響します。
コードはWindowsでは魅力のように機能し、正しい結果(高さ)を提供しますが、Ubuntuではレンダリング自体が正しくないため、結果も正しくありません。
これは私がこれまでに試したことです-
- ディスプレイの解像度を変更します。動作しませんでした。どのディスプレイ サイズでも、スクリーンショットは同じように見えます。
- フォント、フォントサイズなどの変更は機能しませんでした。HTML のブロックごとに CSS が異なるため、首が痛いです。
- ブラウザ変更。FirefoxでもChromeでも機能しませんでした
アイデアが不足しています。誰かがアイデアや経験、またはこの問題の解決策を共有してくれると非常に助かります。
グラフィックスドライバーの問題である可能性があることを理解しています.Windowsには問題がありますが、Ubuntuサーバーにはありません。
助けてください。ありがとう、期待して。
編集:画像の説明。