Мне нужен способ сделать скриншоты моих функциональных тестов. Сейчас я использую Selenium 2 с привязками C#. Я очень хочу снять скриншот в конце теста, чтобы убедиться, что отображается желаемая страница. Есть ли какие-либо конкретные инструменты, которые вы, ребята, знаете о том, что я могу включить в свой код на C#, который вызовет скриншот? Я не смог найти встроенное решение Selenium 2 (не глядя на него).Лучший способ сделать скриншоты тестов в Selenium 2?
ответ
Чтобы сделать скриншоты в Selenium 2 вам нужно сделать следующее
driver = new FireFoxDriver(); // Should work in other Browser Drivers
driver.Navigate().GoToUrl("http://www.theautomatedtester.co.uk");
Screenshot ss = ((ITakesScreenshot) driver).GetScreenshot();
//Use it as you want now
string screenshot = ss.AsBase64EncodedString;
byte[] screenshotAsByteArray = ss.AsByteArray;
ss.SaveAsFile("filename", ImageFormat.Png); //use any of the built in image formating
ss.ToString();//same as string screenshot = ss.AsBase64EncodedString;
Этот код должен работать, как я быстро проверил его в IronPython Repl. Смотрите код IronPython ниже
import clr
clr.AddReference("WebDriver.Common.dll")
clr.AddReference("WebDriver.Firefox.dll")
from OpenQA.Selenium import *
from OpenQA.Selenium.Firefox import *
driver = FirefoxDriver()
driver.Navigate().GoToUrl("http://www.theautomatedtester.co.uk")
s = driver.GetScreenshot()
s.AsBaseEncodedString
# HUGE string appears in the REPL
Использование селена Было два звонка, с которым я был знаком: captureEntirePageScreenshot
и captureScreenshot
. Возможно, вам захочется заглянуть в эти призывы, чтобы узнать, выполнит ли они то, что вам нужно.
Эти звонки являются специфическими для селена 1 – AutomatedTester
Мой ответ ниже показывает, как это сделать с помощью Selenium 2. P.s. Я не проголосовал за вас – AutomatedTester
Я не знаю, если это имеет значение, но я в конечном итоге того, чтобы отбрасывать водителя, когда я писал в C#.
что-то вроде:
Screenshot ss = ((ITakesScreenshot)driver).GetScreenshot();
var driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("http://www.google.com");
var ss = driver.GetScreenshot();
ss.SaveAsFile("ss.png", System.Drawing.Imaging.ImageFormat.Png);
- Добавить ссылку на
System.Drawing
в вашем решении/проекта. - Используйте пробел
System.Drawing.Imaging
в своем тесте.
Здесь я снимаю снимок экрана на главной странице Facebook.
using System;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
using NUnit.Framework;
using System.IO;
using System.Collections;
using System.Drawing.Imaging;
namespace FacebookRegistrationUsingC_Sharp
{
[TestFixture]
public class ScreenShot
{
IWebDriver driver = null;
IWebElement element = null;
[SetUp]
public void SetUp()
{
driver = new ChromeDriver("G:\\Selenium_Csharp\\Jar\\chromedriver_win32");
driver.Navigate().GoToUrl("https://www.Facebook.com");
driver.Manage().Window.Maximize();
}
[Test]
public void TestScreenShot()
{
Screenshot ss = ((ITakesScreenshot)driver).GetScreenshot();
ss.SaveAsFile("e:\\pande", System.Drawing.Imaging.ImageFormat.Jpeg);
}
[TearDown]
public void TearDown()
{
driver = null;
element = null;
}
}
}
Используйте System.Drawing.Imaging reference. Следующий код может использоваться для снятия снимков экрана.
IWebDriver driver = new FirefoxDriver();
ITakesScreenshot screenshotDriver = driver as ITakesScreenshot;
Screenshot screenshot = screenshotDriver.GetScreenshot();
String fp = "D:\\" + "snapshot" + "_"+ DateTime.Now.ToString("dd_MMMM_hh_mm_ss_tt") + ".png";
screenshot.SaveAsFile(fp, ImageFormat.Png);
Примечание: Отметки имеет два преимущества: 1) Вы получите, чтобы узнать идеальный DateTime, когда скриншот взят. 2) Функция SaveAsFile перезаписывает существующий файл. Таким образом, DateTime может помочь в создании разных файлов.
public void TakeScreenshot(string saveLocation) {
var location = GetPath() + _name + "\\" + saveLocation + ".png";
var ssdriver = _driver as ITakesScreenshot;
var screenshot = ssdriver.GetScreenshot();
screenshot.SaveAsFile(location, ImageFormat.Png);
}
Этот код поможет вам принять снимок экрана
Просто используйте метод расширения TakeScreenshot() в одной строке кода.
IWebDriver driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("Your_Homepage_Url");
driver.TakeScreenshot().SaveAsFile("file_name_string", ImageFormat.Jpeg);
Обратите внимание, что метод 'TakeScreenshot()' является методом расширения, который требует установки пакета Sulenium.Support NuGet. – thecodefish
@Deeb '' 'ImageFormat''' теперь не рекомендуется использовать' '' ScreenshotImageFormat'''. – TotPeRo
ScreenCaptureJob scj;
scj = new ScreenCaptureJob();
// Specify the path & file name in which you want to save
scj.OutputScreenCaptureFileName = @"C:\Users\jpavankumar\Desktop\Screencaptuere\ScreenRecording4.wmv";
// Start the Screen Capture Job
scj.Start(); scj.Stop();
Попробуйте этот код здесь ... надеюсь, что это будет полезно для вас ....!
Пожалуйста, объясните, как ваш ответ охватывает то, как этот подход достигает желаемого результата и почему он будет работать. Это действительно помогло бы знаниям ФП. – Bluetree
- 1. WPF: способ сделать скриншоты
- 2. Выполнение тестов Selenium 2 против удаленного браузера
- 3. Лучший способ сделать модалы в Angular 2?
- 4. Лучший способ практиковать Selenium
- 5. Как сделать драйвер Selenium firefox делать скриншоты только просматриваемой страницы
- 6. Linq 2 SQL - лучший способ сделать это
- 7. Allure AShot() скриншоты в Selenium
- 8. Есть ли способ сделать Selenium Grid 2 DesiredCapabilities браузером-агностиком?
- 9. Лучший способ десериализации объектов GlobalID для тестов
- 10. Лучший способ узнать что-то в Selenium
- 11. SmartWatch 2 скриншоты
- 12. Лучший способ автоматизировать цикл в Selenium
- 13. Лучший способ написания модульных тестов для словаря
- 14. Лучший способ сделать это?
- 15. Лучший способ сделать это ..?
- 16. лучший способ сделать кнопки
- 17. Лучший способ сделать проверку
- 18. Лучший способ сделать наложение
- 19. лучший способ сделать это?
- 20. Лучший способ запуска функциональных тестов приложения WSGI?
- 21. лучший способ запуска многопоточных тестов nunit
- 22. Лучший способ сделать заставку
- 23. Лучший способ сделать это?
- 24. Лучший способ реализации долгосрочных и зависимых тестов
- 25. Лучший способ запуска тестов Qunit под флягой
- 26. Есть ли способ сделать скриншоты во время запланированной задачи, если пользователь не вошел в систему?
- 27. Лучший способ сохранить скриншоты с url2png на собственный сервер?
- 28. Как сделать скриншоты?
- 29. Есть ли способ отменить выполнение тестов в Selenium Grid?
- 30. Лучший способ сделать несколько подвыборок?
Спасибо! Поэтому у меня есть строка для имени файла «C: \\ .. path .. \\ screen.png», но она никогда не появляется там. – James
Заменить этот код: «Снимок экрана ss = driver.GetScreenshot();» ... с этим кодом: "Снимок экрана ss = ((ITakesScreenshot) webDriver) .GetScreenshot();" – MacGyver
При использовании .NET 4.0 и Selenium .NET 4.0, вам нужно будет явно добавить ссылку на System.Drawing (Добавить ссылку> вкладка .NET> System.Drawing), если вы создали проект библиотеки классов в Visual Studio 2010 ... затем вызовите это, чтобы сохранить файл где-нибудь: "ss.SaveAsFile (@" C: \ ss.png ", System.Drawing.Imaging.ImageFormat.Png);" – MacGyver