Я написал код селена для тестирования веб-приложения с помощью Testng + webdriver. У меня есть хаб и один узел, на котором я запускаю firefox + chrome, и планшет Android, на котором я запускаю тесты для Android.
Я могу запускать тесты Android один за другим, но когда я запускаю как часть пакета testng, я сталкиваюсь со следующей проблемой:
браузер Android не закрывается после каждого теста, хотя я вызываю driver.quit () в аннотации @aftertest.
Вот в одном из моих тестов:
public class LanguageCheckEN {
WebDriver driverEN, driverFR;
String BaseURL, winURL, TestURL, andURL;
@BeforeTest
@Parameters({ "browser" })
public void setup(String browser) throws IOException
{
File file = new File("config.properties");
FileInputStream fileInput = new FileInputStream(file);
Properties properties = new Properties();
properties.load(fileInput);
fileInput.close();
TestURL = properties.getProperty("AppURL");
BaseURL = properties.getProperty("HubURL");
winURL = properties.getProperty("WinURL");
andURL = properties.getProperty("AndURL");
DesiredCapabilities capability = null;
if (browser.equalsIgnoreCase("firefox")) {
System.out.println("firefox");
capability = DesiredCapabilities.firefox();
capability.setBrowserName("firefox");
capability.setPlatform(Platform.WINDOWS);
// capability.setVersion("");
driverEN = new RemoteWebDriver(new URL(winURL), capability);
}
if (browser.equalsIgnoreCase("chrome")) {
System.out.println("chrome");
capability = DesiredCapabilities.chrome();
capability.setBrowserName("chrome");
capability.setPlatform(Platform.WINDOWS);
driverEN = new RemoteWebDriver(new URL(winURL), capability);
// capability.setVersion("");
}
if (browser.equalsIgnoreCase("android")) {
System.out.println("android");
capability = DesiredCapabilities.android();
capability.setBrowserName("android");
capability.setPlatform(Platform.ANDROID);
driverEN = new RemoteWebDriver(new URL(andURL), capability);
// capability.setVersion("");
}
}
@Test
private void checkLanguageEN() {
driverEN.get(TestURL);
WebElement input1 = driverEN
.findElement(By.id("login_form_user_input"));
input1.sendKeys("guest");
WebElement input2 = driverEN.findElement(By
.id("login_form_password_input"));
input2.sendKeys("guest");
WebElement btn = driverEN
.findElement(By.id("login_form_signin_button"));
btn.click();
WebElement img = driverEN.findElement(By.id("header_language_button"));
String lng = img.getText();
if (lng.equals("en"))
{
WebDriverWait wait = new WebDriverWait(driverEN, 20);
wait.until(ExpectedConditions.visibilityOfElementLocated(By
.linkText("Calendar Search")));
}
else
{
img.click();
WebDriverWait wait = new WebDriverWait(driverEN, 20);
wait.until(ExpectedConditions.visibilityOfElementLocated(By
.linkText("Calendar Search")));
}
}
@AfterTest
private void quitTest() {
driverEN.close();
}
public void aftertest()
{
quitTest();
}
}
Вот и мой файл testng.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Dollar Universe Explorer E2E Testing" thread-count="3" parallel="tests" >
<test name="Language English Chrome">
<parameter name="browser" value="chrome" />
<classes>
<class name="basicWebElements.LanguageCheckEN" />
</classes>
</test>
<test name="Language English firefox">
<parameter name="browser" value="firefox" />
<classes>
<class name="basicWebElements.LanguageCheckEN" />
</classes>
</test>
<test name="Language English android">
<parameter name="browser" value="android" />
<classes>
<class name="basicWebElements.LanguageCheckEN" />
</classes>
</test>
</suite>
Из-за этой проблемы, когда я запускаю весь пакет, я получаю эту ошибку:
org.openqa.selenium.remote.UnreachableBrowserException: ошибка связи с удаленным браузером. Возможно, он умер.
Спасибо за вашу помощь.