Снимок экрана только области просмотра (Firefox и IE), а не всей страницы, с использованием Selenium Webdriver C#

Я использую автоматическое тестирование Selenium Webdriver в Browserstack, и когда я делаю снимок экрана в Firefox и IE, он делает снимок экрана всей страницы. Но так как моя страница содержит очень длинный список - скриншот слишком "длинный", и из-за этого изображение нечеткое, и трудно понять, правильно ли ведет себя страница. Мне нужно, чтобы это было точно так же, как Chrome: скриншот только ширины и высоты области просмотра. Возможно ли это в Firefox и IE?

Код, который я использую:

Screenshot ss = ((ITakesScreenshot)driver).GetScreenshot();
ss.SaveAsFile(imageSave, System.Drawing.Imaging.ImageFormat.Png);

person buca    schedule 28.02.2017    source источник
comment
всегда можно взять сс с помощью встроенной винды и обрезать   -  person Steve    schedule 01.03.2017
comment
Вы можете обрезать снимок экрана и сохранить его в новый файл.   -  person Akash KC    schedule 01.03.2017
comment
Tnx, ребята. Должен ли я обрезать его вручную? Это множество изображений - это невозможно. Есть ли способ сделать это автоматически? @Стив   -  person buca    schedule 01.03.2017
comment
@buca да, вы можете использовать Windows API, чтобы получить положение и размер окна, затем вы можете просто обрезать его, используя код, основанный на положении/размере   -  person Steve    schedule 01.03.2017
comment
@Steve Tnx, я попробую.   -  person buca    schedule 02.03.2017


Ответы (1)


Обновите до Selenium 3 версии.

В версиях Selenium 2.* в качестве снимка экрана делается полная веб-страница.

Начиная с версии Selenium 3.* в качестве снимка экрана используется только видимая часть веб-страницы.

Итак, просто обновив версию селена, вы можете добиться такого поведения, и тот же код должен работать.

Из официальной документации по Selenium:

Screenshot ss = ((ITakesScreenshot)webDriver).GetScreenshot();
string screenshot = ss.AsBase64EncodedString;
byte[] screenshotAsByteArray = ss.AsByteArray;
ss.SaveAsFile(activeDir + TestSuiteName + "//" + FileNanme + imageFormat, ImageFormat.Jpeg);

Я проверил это поведение в Python с Selenium 3.0.2 в обоих Chrome & Firefox

from selenium import webdriver

driver = webdriver.Firefox()
driver.get('http://stackoverflow.com/users/2575259/naveen')
driver.get_screenshot_as_file('D:/Naveen/so/google.png') 
driver.quit()
person Naveen Kumar R B    schedule 01.03.2017
comment
Это не относится к Safari и IE. - person Elheni Mokhles; 25.08.2017