Я себе для небольших тестов сделал класс 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(); }