Перейти к содержимому

M@ks

Регистрация: 08 окт 2009
Offline Активность: 14 окт 2015 20:02
-----

#144352 Selenide - как задать тип браузера в коде?

Написано M@ks 22 сентября 2015 - 13:54

Я себе для небольших тестов сделал класс Drivers и вначале тестов передаю селениду конкретный драйвер

 

Не уверен на 100% правильность, но работает как с реальными браузерами, так и с мобильными через appium

public class Drivers {

	private static WebDriver driver = null;
	private static AndroidDriver andrDrv = null;
	
	public  Drivers() {
		System.out.println("Drivers initiated");
	}

	public WebDriver getChromeDriver(){
		System.setProperty("webdriver.chrome.driver", "c:/Program Files (x86)/Google/Chrome/Application/chromedriver.exe");

    	return driver = new ChromeDriver();
	}
	
	public AndroidDriver getAndroidChromeDriver() throws MalformedURLException{

		DesiredCapabilities capabilities = new DesiredCapabilities();
		capabilities.setCapability(CapabilityType.BROWSER_NAME, "BROWSER"); //Name of mobile web browser to automate. Should be an empty string if automating an app instead.
		capabilities.setCapability("platformName", "Android");
		capabilities.setCapability("deviceName", "Testing");
		
		return andrDrv = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
	}
	
	public AndroidDriver getAndroidSpecificAppDriver() throws MalformedURLException {
		
		File classpathRoot = new File(System.getProperty("user.dir"));
		File appDir = new File(classpathRoot, "/ContactManager");
		File app = new File(appDir, "ContactManager.apk");
	
		DesiredCapabilities capabilities = new DesiredCapabilities();
		capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); //Name of mobile web browser to automate. Should be an empty string if automating an app instead.
		capabilities.setCapability("platformName", "Android");
		capabilities.setCapability(CapabilityType.VERSION, "4.4");
		capabilities.setCapability("deviceName", "Android");
		capabilities.setCapability("app", app.getAbsolutePath());
		capabilities.setCapability("appPackage", "com.example.android.contactmanager");
		capabilities.setCapability("appActivity", ".ContactManager");

		return andrDrv = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
	}
	public AndroidDriver getAndroidCalculatorDriver() throws MalformedURLException {
		DesiredCapabilities capabilities = new DesiredCapabilities();
		capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); //Name of mobile web browser to automate. Should be an empty string if automating an app instead.
		capabilities.setCapability("platformName", "Android");
		capabilities.setCapability(CapabilityType.VERSION, "4.4");
		capabilities.setCapability("deviceName", "Android");
		capabilities.setCapability("appPackage", "com.android.calculator2");
		capabilities.setCapability("appActivity", ".Calculator");

		return andrDrv= new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
	}
	public void closeDriver(){
		if (driver != null){
			driver.close();
		}
		if (andrDrv !=null) {
			andrDrv.close();
		}
		
	}

а вот тесты вызывающие каждый свой браузер

	//This is the base class to run tests
	public Drivers drvs = new Drivers();
	
	@Before
	public void setUp() throws Exception {
		
		
	    //This class to initiate tests 
	}
	
	@Test
	public void searchQueryInFirefox(){
		//Run simple specific_web_page test using default Firefox browser
		//Firefox is a default driver for Selenide
		openHome();
		searchQuery("John");
		
		closeHome();
	}
	
	@Test
	public void searchQueryInChrome(){
		//Run simple specific_web_page test using Google Chrome browser 
		WebDriverRunner.setWebDriver(drvs.getChromeDriver());

		openHome();
		searchQuery("John");
		
		closeHome();
	}
	
	@Test
	public void searchQueryInAndroidBrowser() throws Exception{
		//Run simple psa-software.com test using default browser on Android emulator
		WebDriverRunner.setWebDriver(drvs.getAndroidChromeDriver());
		
		openHome();
		searchQuery("John");
		
		closeHome();
	}
	
	@Test
	public void RunAndroidSpecificAppTest() throws Exception{
		//Run simple android application test using ContactManager application
		WebDriverRunner.setWebDriver(drvs.getAndroidSpecificAppDriver());
		$(By.name("Add Contact")).click();

		$(By.className("android.widget.EditText"),0).sendKeys("Some Name");

		$(By.className("android.widget.EditText"),2).sendKeys("Some@example.com");
		$(By.name("Save")).click();
		
		if( $(By.className("android.widget.TextView"),0).getText().equalsIgnoreCase("Unfortunately, Contact Manager has stopped.")){
			System.out.println($(By.className("android.widget.TextView"),0).getText());
			Assert.fail();
		} 

		
		closeWebDriver();
	}
	
	
	@Test
	public void AndroidCalculatorTest() throws Exception{
		//Run simple android application test using standard application - Calculator
		WebDriverRunner.setWebDriver(drvs.getAndroidCalculatorDriver());
		$(By.name("6")).click();
		$(By.name("×")).click();
		$(By.name("4")).click();
		$(By.name("=")).click();
		$(By.className("android.widget.EditText"),0).shouldHave(text("24"));
		
		closeWebDriver();
	}
	

  • 1