我编写了一些 selenium 代码来使用 Testng + webdriver 测试 Web 应用程序。我有一个集线器和一个节点,我运行 firefox+chrome 和一个运行 android 测试的 android 平板电脑。
我可以一个一个地运行 android 测试,但是当我作为 testng 套件的一部分运行时,我面临以下问题:
即使我在 @aftertest 注释中调用 driver.quit(),android 浏览器也不会在每次测试后关闭。
在我的一项测试中:
公共类 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:与远程浏览器通信时出错。它可能已经死了。
谢谢你的帮助。