2017-08-17 83 views
1

我使用Selenium(Chrome驅動程序)生成頁面的屏幕截圖。但有時生成的屏幕截圖在屏幕截圖底部會有空白。它隨機發生。它看起來像渲染只是停止(見附件截圖)。Selenium Chrome屏幕截圖隨機生成空白

我試圖

  • 已更新爲
  • 更新到Selenium.WebDriver的最新版本的Chrome的最新版本(60.0.3112.101)(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。

+0

IMO,它不會失敗,你能得到我們的'url'和預期的截圖嗎? – DebanjanB

+0

@DebanjanB對不起,我不能,因爲它運行在一個內部系統。 –

回答

2

有趣的,我是用外部Java庫截圖時得到了同樣的問題,但問題是,我是在充分頁面截圖等等滾動頁面是一個必要的事情,然後截圖合併爲一個空格與。與你的情況看起來不一樣。

我看到你正在使用driver.Manage().Window.Size = new Size(4000, 3000); 也許你可能試圖擴大你的窗口全屏只是爲了看到區別?

我試圖尋找爲C#外部screenshotting框架,但無法找到anyhting :( 這裏有一些職位(例如:12),您可能要檢查它們是否包含替代screenshoting的解決方案,如果這個bug是對你的測試來說很關鍵 祝你好運!

+0

感謝您的評論@Mykola!我嘗試了全屏方法,而不是Size = 4000,3000,但它沒有奏效。奇怪的是,這是隨機發生的。看起來我們必須回到PhantomJS。 –