selenium phantomjs tutorial
V tomto článku je vysvětlena automatizace selenu pomocí PhantomJS s příklady kódu:
PhantomJS je bezhlavý prohlížeč, který se primárně používá pro automatizaci bez grafického uživatelského rozhraní.
Výkon a provádění v tomto prohlížeči je rychlejší a obvykle se používá ve scénářích, kde není vyžadováno ruční monitorování, a v těch aplikacích, které jsou zcela automatizovány.
PhantomJS se velmi doporučuje v případě provádění skriptů přes noc, kde není vyžadováno lidské sledování, protože provádění je rychlé a rychlé. Poskytuje také možnosti automatického snímku obrazovky pro ruční sledování procesu provádění skriptu.
Co se naučíte:
- Využití PhantomJS na automatizaci webových stránek
- PhantomJS a selen pro automatizaci webu (základní)
- PhantomJS a selen pro automatizaci webu (pokročilé)
- Screenshot a zpráva po spuštění
- Doporučení použít PhantomJS jako testovací prohlížeč
- Doporučené čtení
Využití PhantomJS na automatizaci webových stránek
V tomto článku budeme používat nástroj Selenium Automation k provádění funkční automatizace v prohlížeči PhantomJS.
PhantomJS ve skutečnosti vytváří instanci prohlížeče, který nemá rozhraní GUI, ale má všechny standardy prohlížeče s rozhraním GUI, jako je (Firefox, IE atd.), Standardní skriptování DOM, volání Ajaxu atd.
Cíl použití PhantomJS se selenem
Je velmi důležité pochopit cíl použití PhantomJS se selenem.
Všichni víme, že selen je nástroj pro automatizaci funkcí, který se používá k automatizaci různých funkcí webových aplikací.
Cíl PhantomJS se nyní mírně liší, protože jde o prohlížeč bez grafického uživatelského rozhraní a jeho primárním využitím je automatizace testovacích případů spadajících do kategorie kouřových testů / validačních testů a nikoli plnohodnotné automatizace regresních testů.
Pokud automatizujeme pomocí Selenium a PhantomJS, musíme být opatrní při výběru testovacích případů. Další důležitou součástí je sledování stavu provádění testovacích případů, protože provádění nemůžeme fyzicky vidět.
PhantomJS a selen pro automatizaci webu (základní)
Stejně jako všechny ostatní prohlížeče s grafickým uživatelským rozhraním (Firefox, IE, Chrome atd.) Má Selenium i pro PhantomJS standardní API pro podporu automatizace.
Ilustrujme totéž jednoduchým kódem:
import java.io.File; import java.io.IOException; import java.util.concurrent.TimeUnit; import org.apache.commons.io.FileUtils; import org.openqa.selenium.By; import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.WebDriver; import org.openqa.selenium.phantomjs.PhantomJSDriver; import org.openqa.selenium.phantomjs.PhantomJSDriverService; import org.openqa.selenium.remote.DesiredCapabilities; public class PhantomJSTest { public void phantomJS() throws InterruptedException, IOException { DesiredCapabilities caps = new DesiredCapabilities(); caps.setJavascriptEnabled(true); caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, 'D:\chromedriver\phantomjs-2.1.1-windows\bin\phantomjs.exe'); caps.setCapability('takesScreenshot', true); PhantomJSDriver driver = new PhantomJSDriver(caps); String baseUrl = 'http://www.google.com'; driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.get(baseUrl + '/'); File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(scrFile, new File('d:\PhantomJSSample\screenshotAfterLaunchingGoogle.jpeg'),true); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.navigate().to('https://selenium.dev//');//Launch URL File scrFile1 = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(scrFile1, new File('d:\PhantomJSSample\screenshotAfterLaunchingURL.jpeg'),true); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.findElement(By.linkText('Download')).click();//Click on the Link driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); File scrFile2 = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); FileUtils.copyFile(scrFile2, new File('d:\PhantomJSSample\screenshotAfterClickingDownload.jpeg'),true); Thread.sleep(2000); int header_size =driver.findElements(By.xpath('(//div[@id='mainContent']//h3[1])')).size();//Get the total count of h3 headers in the page for(int i=1; i?=header_size; i++) { String suggestion_name_xp = '('+'//div[@id='mainContent']//h3[1]'+')'+'['+i+']'; String header =driver.findElement(By.xpath(suggestion_name_xp)).getText(); System.out.println(header); //Print the name of headers } Thread.sleep(2000); } public static void main(String[] args) throws InterruptedException, IOException { PhantomJSTest pj =new PhantomJSTest(); pj.phantomJS(); } }
Spustí se výše uvedený fragment kódu Oficiální web selenu v prohlížeči PhantomJS a provede operaci kliknutí na kartě stahování. Poté vypočítá počet hlaviček hlavního obsahu označeného h3 na stránce pro stahování a vytiskne jej.