Czy ktoś wie, czy można zrobić zrzut ekranu za pomocą Selenium WebDriver? (Uwaga: Nie Selenium RC)
selenium
selenium-webdriver
ashot
takesscreenshot
selenium-shutterbug
James Hollingworth
źródło
źródło
Odpowiedzi:
Jawa
Tak to mozliwe. Poniższy przykład jest w Javie:
źródło
/tmp
używa się własnego systemu plików, a FirefoxDriver zapisuje zrzuty ekranu/tmp
.HtmlUnitDriver
się nie implementujeTakesScreenshot
(patrz lista obsługiwanych sterowników - patrz selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/ ...). Ale możesz zapisać jako HTML.org.apache.commons.io.FileUtils
Pyton
Każdy WebDriver ma
.save_screenshot(filename)
metodę. W przypadku Firefoksa można go użyć w następujący sposób:Mylące jest
.get_screenshot_as_file(filename)
też, że istnieje metoda, która robi to samo.Istnieją również metody:
.get_screenshot_as_base64()
(do osadzania w HTML) i.get_screenshot_as_png()
(do pobierania danych binarnych).i Zwróć uwagę, że WebElements ma
.screenshot()
metodę, która działa podobnie, ale przechwytuje tylko wybrany element.źródło
driver.set_window_size(1366, 728)
.DO#
źródło
JavaScript (Selenium-Webdriver)
źródło
var1
jeśli chcesz. Powinieneś spojrzeć natakeScreenshot()
funkcję, aby wiedzieć, co to dokładnie jest. Może obraz binarny renderowany z javascript przy użyciu płótna. Może to być dom, zanim zostanie zrenderowany. Zbadać.Rubin
dostępnych jest więcej typów plików i opcji, które można zobaczyć na stronie takes_screenshot.rb
źródło
headless
iFirefox
Jawa
Problem został rozwiązany. Możesz go rozszerzyć,
RemoteWebDriver
aby uzyskać wszystkie interfejsy implementowane przez jego proxy:źródło
PHP (PHPUnit)
Używa rozszerzenia PHPUnit_Selenium w wersji 1.2.7:
źródło
DO#
źródło
Jawa
źródło
Jython
źródło
Java (Robot Framework)
Użyłem tej metody do robienia zrzutów ekranu.
Możesz użyć tej metody, gdziekolwiek jest to wymagane.
źródło
Jawa
Wydaje się, że tutaj brakuje - wykonanie zrzutu ekranu określonego elementu w Javie:
źródło
code
this.driver.manage (). Window (). SetSize (new Dimension (1680, 1050)); lub usunąć wszelkie niepotrzebne elementy za pomocą css. Właściwym rozwiązaniem byłoby obliczenie przesunięcia y z przewijania.Firefox
działa dobrze, ponieważ upraw ekran element z pełnego obrazu w oparciu o wymiary. WChrome
jeśli element jest dostępny w widoku części z obecnie przewijanie od tego widoku część obrazu ujmuje elementu grzywny. Jeśli chcemy zrobić zrzut ekranu podocument.documentElement.clientHeight
dwukrotnym przewinięciu klienta Wysokość, użyj,(location.y)-2*clientHeight
aby uzyskać dokładny zrzut ekranu elementu. Dzięki za ten post, ponieważ pomaga mi ...DO#
Wymaga pakietów NuGet:
Testowane z .NETFramework v4.5.2
źródło
Jawa
Nie udało mi się uzyskać zaakceptowanej odpowiedzi do pracy, ale zgodnie z bieżącą dokumentacją WebDriver , następujące działało dla mnie dobrze z Javą 7 w OS X 10.9:
źródło
Rubin (Ogórek)
źródło
Rubin
źródło
PHP
źródło
takescreenshot
funkcję? W szczególności skąd$event
pochodzi zmienna? Jestem kompletnym Selenem noob, więc odpowiedź na to pytanie, która nie zakłada wcześniejszej wiedzy na temat Selenu, byłaby bardzo mile widziana!PowerShell
Inne sterowniki ...
źródło
[OpenQA.Selenium.ScreenshotImageFormat]::Png
niżSystem.Drawing
przestrzeń nazw.Python - zrzut ekranu elementu:
To dość stare pytanie i ma wiele odpowiedzi. Wydaje się jednak, że brakuje zrzutu ekranu określonego elementu sieci przy użyciu Pythona.
Lokalizacja
Element sieciowy ma własną pozycję na stronie i ogólnie jest mierzony w pikselach xiy i znany jako (x, y) współrzędne elementu. Obiekt lokalizacji zawiera dwie wartości.
rozmiar
Podobnie jak lokalizacja, każdy element WebElement ma szerokość i wysokość; Dostępny jako obiekt wielkości.
Za pomocą współrzędnych (x, y) oraz wartości szerokości i wysokości możemy wykadrować obraz i zapisać go w pliku.
Uwaga: Źródło : http://allselenium.info/capture-screenshot-element-using-python-selenium-webdriver/
źródło
Istnieje wiele metod selen„s Jawa i pytonklient, aby zrobić zrzut ekranu za pomocąselenium-webdriver
Metody Java
Poniżej przedstawiono różne metody Java do zrobienia zrzutu ekranu :
Korzystanie
getScreenshotAs()
z interfejsu TakesScreenshot :Blok kodu:
Zrzut ekranu:
Jeśli strona internetowa jest jquery włączoną , możesz jej użyćstrzałz biblioteki pazone / ashot :
Blok kodu:
Zrzut ekranu:
Za pomocą selen-migawkaz biblioteki assertthat / selenium-shutterbug :
Blok kodu:
Zrzut ekranu:
Metody Pythona
Poniżej przedstawiono różne metody wykonywania zrzutów ekranu w języku Python :
Za pomocą
save_screenshot()
metody:Blok kodu:
Zrzut ekranu:
Za pomocą
get_screenshot_as_file()
metody:Blok kodu:
Zrzut ekranu:
Za pomocą
get_screenshot_as_png()
metody:Blok kodu:
Zrzut ekranu:
źródło
Pyton
Możesz przechwycić obraz z systemu Windows za pomocą sterownika sieciowego Python. Użyj kodu, poniżej którego strona ma przechwycić zrzut ekranu
źródło
Jawa
Korzystając z tych dwóch metod, możesz również zrobić zrzut ekranu z datą i godziną.
źródło
Jawa
Używając RemoteWebDriver, po rozszerzeniu węzła o możliwość tworzenia zrzutów ekranu, zapisywałbym zrzut ekranu w następujący sposób:
Możesz użyć tej metody, gdziekolwiek jest to wymagane. Następnie zakładam, że możesz dostosować arkusz stylów wtyczki maven-surefire-report-plugin w surefire-raporty / html / custom.css, aby twoje raporty zawierały link do prawidłowego zrzutu ekranu dla każdego testu?
źródło
Jawa
Mam nadzieję, że to rozwiąże twój problem
źródło
DO#
źródło
Selenese
źródło
DO#
Aby zrobić zrzut ekranu z selenem, możesz użyć następującego fragmentu kodu / funkcji:
źródło
Możesz spróbować AShot API. Oto link github do tego samego.
https://github.com/yandex-qatools/ashot
Niektóre testy tutaj ...
https://github.com/yandex-qatools/ashot/tree/master/src/test/java/ru/yandex/qatools/elementscompare/tests
źródło
JAWA
Metoda przechwytywania zrzutu ekranu dla awarii w Selenium z dołączoną nazwą testową i datownikiem.
źródło
C # (API Ranorex)
źródło