2017-08-17 13 views
1

私は、Selenium(Chromeドライバ)を使用してページのスクリーンショットを生成します。しかし、生成されるスクリーンショットには、スクリーンショットの下部に空白があることがあります。それはランダムに起こります。レンダリングが停止するようです(スクリーンショットの添付を参照)。Selenium Chromeスクリーンショットは無作為に生成されます

は私がChromeの最新バージョン(60.0.3112.101)障害者Selenium.WebDriverの最新バージョン(3.5.1)

  • 「に更新
  • に更新

    • を試してみましたNO-サンドボックス」と "ヘッドレス" 引数

    コード

    var chromeOptions = new ChromeOptions(); 
    chromeOptions.AddArgument("--headless"); 
    chromeOptions.AddArgument("--no-sandbox"); 
    
    var driver = new ChromeDriver(Server.MapPath("bin"), chromeOptions, TimeSpan.FromMinutes(3));  
    driver.Navigate().GoToUrl("someurl.com"); 
    driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(220); 
    driver.Manage().Window.Size = new Size(4000, 3000); 
    
    ((ITakesScreenshot)driver).GetScreenshot().SaveAsFile("screenshote.png", ScreenshotImageFormat.Png); 
    
    driver.Close(); 
    driver.Quit(); 
    

    ここでスクリーンショット

    は、単純なレンダリングが失敗したBG画像のレンダリングです。 enter image description here

    更新

    私は、URLへのリンクを与えることはできませんが、私はPhantomJSを使用する場合、同じURLがレンダリング失敗することはありません。

  • +0

    私は 'url'と期待されるスクリーンショットを取得できますか? – DebanjanB

    +0

    @DebanjanB内部システムで動作しているので、申し訳ありません。 –

    答えて

    2

    興味深いことに、スクリーンショット用に外部JAVAライブラリを使用しても同じ問題が発生していましたが、問題はページをスクロールする必要があり、スクリーンショットが空白で1つにマージされるようでした。あなたの場合と同じように見えません。

    私はあなたが使用しているのを見ていますdriver.Manage().Window.Size = new Size(4000, 3000); 多分あなたは違いを見るためにフルスクリーンであなたのウィンドウを拡張しようとするかもしれません?

    私はC#のための外部screenshottingの枠組みを検索しようとしましたが、anyhtingを見つけることができませんでした:( いくつかの記事がここにあります(例:1または2)このバグがある場合、あなたは彼らが代替screenshoting・ソリューションが含まれているかどうかを確認したい場合がありますことをあなたのテストには非常に重要です 幸運!

    +0

    あなたのコメントのおかげで@Mykola!私はサイズ= 4000,3000の代わりに全画面方法を試みたが、うまくいかなかった。これはランダムに起こることも奇妙である。 PhantomJS。 –

    関連する問題