2013-06-04 52 views
0

我試圖在Selenium Web Driver中實現繼承。在Countrychoser類中,我從Baseurl Class中調用了Basic()方法。當我嘗試在TestNG中執行時,瀏覽器調用了兩次。但是在TestNG.xml中,我只提到了Countrychoser類。在Selenium Web驅動中使用TestNG時調用兩次的方法

Baseurl.java

package MyTestNG; 

import org.testng.annotations.BeforeSuite; 
import org.testng.annotations.AfterSuite; 
import org.testng.annotations.Test; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 


public class Baseurl { 
    public static WebDriver driver; 
    @Test 
    public static void basic() 
    { 
    driver = new FirefoxDriver(); 
    driver.manage().deleteAllCookies(); 
    driver.get("http://www.sears.com/shc/s/CountryChooserView?storeId=10153&catalogId=12605"); 
    } 
    public static void Closebrowser() 
    { 
     driver.quit(); 
    } 
} 

Countrychoser.java

package MyTestNG; 

import org.testng.annotations.*; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebDriverBackedSelenium; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import com.thoughtworks.selenium.Selenium; 
import org.openqa.selenium.support.ui.Select; 
import java.util.*; 
import java.io.*; 

public class Countrychoser extends Baseurl 
{ 
@Test 
    public static void Choser() 
    { 
    try 
    { 

    Baseurl.basic(); 
    //driver.findElement(By.className("box_countryChooser")).click(); 
    driver.findElement(By.id("intselect")).sendKeys("India"); 
    driver.findElement(By.xpath(".//*[@id='countryChooser']/a/img")).click(); 
    //window.onbeforeunload = null; 
    System.out.println("---------------------------------------"); 
    System.out.println("Country choser layer test case-Success"); 
    System.out.println("---------------------------------------"); 
     } 


    catch(Exception e) 
    { 
      Screenshot.pageScreenshot(); 
      System.out.println(e); 
      System.out.println("---------------------------------------"); 
      System.out.println("Country choser layer test case Failed"); 
      System.out.println("---------------------------------------"); 
      } 

    finally { 

      Screenshot.pageScreenshot(); 
      Baseurl.Closebrowser(); 
      } 
    } 
} 

的testng.xml

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 

<suite name="Suite1" verbose="1" > 

    <test name="First" > 
    <classes> 
     <class name="MyTestNG.Countrychoser" /> 
    </classes> 
    </test> 
    </suite> 
+1

你的問題或問題是什麼? –

+1

請在嘗試使用Java時遵循Java命名約定:程序包名稱只應爲小寫字母,方法名稱應爲camelCase。 – fge

+0

在Countrychoser類中,我擴展了Baseurl.When提到TestNG xml中的Countrychoser類.Browser細節應該從Baseurl類繼承,它只應調用一次。但現在瀏覽器加載了兩次。這就是問題所在。 – user2353517

回答

1

Countrychoser類延伸Baseurl,所以它現在也是Baseurl,並正確地有basic()方法,它被註釋爲測試方法。

因此,basic()成爲執行列表。 因此Choser()方法(如預期)再次調用basic()方法,因此basic()總共運行兩次。

要避免它,您要麼不繼承Baseurl,要麼爲basic()註銷@Test註釋。 您可能有一個父類,它提供driver(並且沒有測試方法),並在BaseCountrychoser(這兩個是兄弟)中繼承它。

相關問題