2013-12-05 2 views
1

Я написал несколько селеновых кодов для тестирования веб-приложения с помощью Testng + webdriver. У меня есть концентратор и один узел, где я запускаю firefox + chrome и планшет Android, где я запускаю тесты на Android.Невозможно запускать тесты селена с помощью testng, пока тесты успешны, если я запускаю тесты один за другим

Я могу запустить Android ИСПЫТАНИЙ один за другим, но когда я бегу как часть TestNG свиты я столкнулся со следующей проблемой:

андроид браузер не закрывается после каждого теста, даже если я звоню driver.quit() в аннотации @aftertest.

Вот в одном из моих тестов:

общественного класса 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.UnreachableBro wserException: ошибка связи с удаленным браузером. Возможно, он умер.

Благодарим за помощь.

ответ

1

Вот ответ:

Android now whinges when you destroy an activity that has view that you 

нету отсоединен от него

WebView webview = (WebView) findViewById(R.id.webview); 
    if (webview != null) 
     { 
     webview.removeAllViews(); 
     webview.destroy(); 
     } 
WebView rssWebView = (WebView) findViewById(R.id.rssWebView); 
    if (rssWebView != null) 
     { 
     rssWebView.removeAllViews(); 
     rssWebView.destroy(); 
     } 

необходим в OnDestroy, чтобы он прекратил жаловаться

Смежные вопросы