wz

Selenium WebDriver: Kliknutí na odkaz

00:42 02.02.2016

Rámcový příklad vytržený z jednoho z mých kódu:

WebElement element;

By menuLink = By.cssSelector(".menu a");
element = (WebElement)webDriver.findElement(menuLink);
element.click();

Selenium WebDriver: Čekej, než bude existovat element

00:38 02.02.2016

Příklad zanořený do statické metody, která slouží jako prostředník:

	public static void waitUntilByExists(WebDriver webDriver,By by, int timeoutInSeconds){
		WebDriverWait waiter = new WebDriverWait(webDriver,timeoutInSeconds);
		waiter.until(ExpectedConditions.presenceOfElementLocated(by));
	}

Selenium WebDriver: Vyplnění hodnoty inputu (Java)

21:43 25.05.2015

Z pokusů se Seleniem: Následující kód předpokládá, že existuje stránka s inputy txtLogin a txtPassword. Těmto inputům se programově vyplní text. Importy potřebných tříd, metody atd. pro zjednodušení vynechávám. Pracuji s knihovnami z org.openqa.selenium. Proměnná webDriver je instancí od třídy implementující rozhraní WebDriver.

WebElement element = webDriver.findElement(By.name("txtLogin"));
element.sendKeys("nick");
		
element = webDriver.findElement(By.name("txtPassword"));
element.sendKeys("password");
		

Selenium - rozeběhnutí v NetBeans

03:56 12.05.2015

Chtěl jsem si zkusit rozeběhnout nějaký úplně jednoduchý Selenium test v NetBeans. Nakonec to bylo docela jednoduché.

  1. člověk si stáhne na této adrese potřebný balíček
  2. Založí si v NetBeans nový projekt a do něj si do Libraries tento stažený balíček přidá
  3. Pak si zkusí napsat nějaký jednoduchý příklad. Pokud to člověku nabízí např. třídu FirefoxDriver, tak je na dobré cestě.
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

/**
 *
 * @author sacmar
 */
public class Starter {
	private static WebDriver webDriver;
	
	public static void main(String[] args){
		webDriver = new FirefoxDriver();
		webDriver.get("http://www.seznam.cz/");
		System.out.println(webDriver.getTitle());
		webDriver.close();
		webDriver.quit();
	}
}

WebDriver - vyplnění textu do inputu a enter

21:52 14.07.2014

V Selenium WebDriveru jsem zkusil programově v rámci testu otevřít stránku Google, tam vyplnit do vyhledávacího inputu slovo "sex" (má name "q"), a pak programově stisknout v tomto inputu enter. Nad stránkou, kterou to načetlo, jsem zkusil, jestli v titulku obsahovalo substring "sex". Tento test kód vypadal zhruba takto:

package seleniumPokus;

import static org.junit.Assert.*;

import java.security.Key;

import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class EnterInInput {

	WebDriver driver;
	
	@Before
	public void beforeTest(){
		driver = new FirefoxDriver();
	}
	
	@After
	public void afterTest(){
		driver.quit();
	}
	
	@Test
	public void testMethod() throws InterruptedException {
		String findText = "sex";
		
		driver.get("http://www.google.com");
		WebElement element = driver.findElement(By.name("q"));
		element.sendKeys(findText);
		Thread.sleep(1000);
		
		element.sendKeys(Keys.RETURN);
		Thread.sleep(5000);
		
		String title = driver.getTitle();
		System.out.println("page title: "+title);
		assertTrue(title.toLowerCase().contains(findText));
	}
}

WebDriver - maximalizace okna

21:06 14.07.2014

Tento příspěvek obsahuje příklad, ve kterém v Selenium WebDriveru otevřu okno Firefoxu, maximalizuji ho, a pak změním jeho velikost na 100 x 100.

package seleniumPokus;

import org.openqa.selenium.Dimension;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Maxim {

	public static void main(String[] args) throws InterruptedException {
		FirefoxDriver driver = new FirefoxDriver();
		driver.get("http://www.google.com");
		
		System.out.println("Started");
		Thread.sleep(1000);
		
		driver.manage().window().maximize();
		System.out.println("Maximized");
		Thread.sleep(1000);
		
		driver.manage().window().setSize(new Dimension(100, 100));
		System.out.println("Changed size");
		Thread.sleep(1000);
		
		
		driver.close();
		System.out.println("End");
	}

}

WebDriver + JUnit test - příklad

13:40 06.07.2014

Selenium WebDriver lze použít společně s JUnitem. Malý příkládek následuje.

package seleniumPokus;

import static org.junit.Assert.*;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class TestcasePokus {

	private WebDriver driver;
	
	public TestcasePokus(){
		driver = new FirefoxDriver();
		driver.get("http://www.seznam.cz");
	}
	
	@Test
	public void test() {
		String title=driver.getTitle();
		assertTrue("Stránka nemá titulek",title.length() > 0);
		System.out.println("Titulek stránky: "+title);
	}
}

Selenium 2 v Chrome - příklad 2

12:43 06.07.2014

V článku Selenium WebDriver v Chrome jsem uvedl příklad, jak spustit test v Chrome. Vyžadovalo to mimo jiné i stáhnout ChromeDriver. Ten bude potřeba i v tomto příkladě. Jen kód tu uvedu trochu jiný. Test z tohoto příkladu vypíše titulek stránky (nic víc).

package seleniumPokus;

import java.io.File;

import org.openqa.selenium.chrome.ChromeDriver;

public class ChromePokus2 {

	public static void main(String[] args) {
		System.setProperty("webdriver.chrome.driver", "C:"+File.separator+"java"+File.separator+"chromedriver.exe");
		ChromeDriver driver = new ChromeDriver();
		driver.get("http://www.google.cz");
		
		System.out.println(driver.getTitle());
	}

}

Selenium WebDriver v Chrome

19:00 05.07.2014

Začal jsem si hrát s WebDriverem. "Ošahávat" si ho, co umí. Toto je už třetí příspěvek na toto téma. Stále v tom nejsem profík. To úvodem.

Tentokrát jsem se snažil spustit test v Chrome, což mi do této doby nešlo. Hlásilo to "The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see http://code.google.com/p/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html", když jsem v kódu měl:

ChromeDriver driver = new ChromeDriver();
driver.get("http://www.seznam.cz/");

Nakonec se mi ale test povedlo spustit i v Chrome. Zaprvé jsem si stáhl ChromeDriver.

Zadruhé jsem upravil kód. Ten pak mohl vypadat např. takto:

package seleniumPokus;

import java.io.File;
import java.io.IOException;

import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriverService;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;


public class ChromePokus {

	public static void main(String[] args) {
		System.out.println("Start");
		ChromeDriverService service =new ChromeDriverService.Builder()
				.usingDriverExecutable(
					new File("C:"+File.separator+"java"+File.separator+"chromedriver.exe")
				)
				.usingAnyFreePort()
				.build();
		try {
			service.start();
			
			RemoteWebDriver driver = new org.openqa.selenium.remote.RemoteWebDriver(
					service.getUrl(),
			        DesiredCapabilities.chrome()
			);
			driver.get("http://www.sachmartin.wz.cz");
			WebElement e = driver.findElementByCssSelector("h1");
			System.out.println(e.getText());//vypise mi to H1 nadpis stránky
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		System.out.println("konec");

	}

}

Jde o takový pokusný kód bez většího smyslu, ve kterém programu jednak říkám, kde najde ChromeDriver, a druhak si tu vypisuji nadpis této stránky. Nic víc. Po spuštění se otevřelo Chrome a do konzole se mi kromě startu a konce vypsal i nadpis této stránky (obsah v <h1>)

Upozornění: V článku Selenium 2 v Chrome - příklad 2 je ještě jednodušší příklad na test v Chrome.

WebDriver: Použití HtmlUnitDriveru a výpis titulku stránky

00:40 01.07.2014

Při pokusech se Seleniem jsem si zkusil použít HtmlUnitDriver a vypsal jsem si s jeho pomocí titulek stránky Seznamu. Kód vypadal takto:

package seleniumPokus;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

public class HtmlUnit {

	public static void main(String[] args) {
		WebDriver driver = new HtmlUnitDriver();
		driver.get("http://www.seznam.cz");
		
		System.out.println(driver.getTitle());
	}
}

Po spuštění se mi vypsal do konzole text "Seznam ? Najdu tam, co neznám"