2014-02-27 89 views
0

我是新来的硒。我需要在我的代码中得到以下内容。如何使用Selenium Webdriver?

我有:

  1. Login.Java - >是否登录网站。
  2. settings.java - >是否更改设置中的某些信息。
  3. 注销 - >注销网站。

每个单一的代码运行良好...现在我需要以下面的方式到达。

创建Sanity.Java - >

调用Login.java 调用settings.java 调用logout.java

runng login.java后,调用settings.java当它打开另一个浏览器..而是运行相同的窗口,如何做到这一点。

我的计划是:我将打破各功能,我会调用这些在main.java文件中的每个功能纸条..

感谢

回答

0

你也可以认为与测试框架TestNG的帮助泡吧您硒webdriver的测试,在此你会写一个TestSuite XML的说sanity.xml,写3测试调用您的类文件(包括方法名称)的节点。现在让我们假设您创建一个BaseTest类,该类可以被每个Test类扩展,如login.java,settings.java & logout.java。 TestNG中你有一个像@BeforeSuite,@Test,@AfterSuite注释

所以你会写在@BeforeSuite,做你的webdriver的对象创建BaseTest类的方法,使这种驱动程序的静态在你的基类,这将是在您的@BeforeSuite方法中只创建一次,稍后将直接用于将来的测试。

@Test注解将在login.java的方法来使它考虑作为试验方法

在@AfterSuite你会写代码关闭您的webdriver实例。 你BaseTest的结构看起来有点像下面

public class BaseTest{ 
    public static WebDriver driver; 

    @BeforeSuite(alwaysRun = true) 
    public void startSuite(){ 
     driver = new FirefoxDriver(); 
    } 

    @AfterSuite(alwaysRun = true) 
    public void endSuite(){ 
     driver.quit(); 
    } 

} 

public class Login extends BaseTest{ 
    @Test 
    public void doLogin(){ 
     WebElement username = driver.findElement(By.xpath("//input[@name='username']")); 
     username.sendKeys("USERNAME"); 
    } 
} 

希望这有助于你

0

你的计划看起来不错。
新浏览器在每个类上打开的原因是您正在其中创建WebDriver的新实例。
喜欢的东西:WebDriver driver = new FirefoxDriver()
您应该创建的webdriver 一次测试或主要方法它作为参数传递给操作方法。
不要忘记在完成流程后关闭它。

祝你好运,
Ittiel

0

我来到这个方法..任何建议,它看起来好吗?

1. DriverManager.Java 

a. Created static driver instance and the method getDriver. 

2. Login.java 

a. Imported the Drivermanager package. 
b. WebDriver driver=DriverManager.getWebDriver(); 
c. test Continiues 

同为设置和注销..

现在我称这些都在理智..

+1

看起来不错,所以用FactoryMethod设计模式的帮助下,你会保持你的驱动程序的单一副本将用于你的所有理智测试。您也可以在您的理智类中保留一个本地引用,它在开始时从DriverManager类实例化,其他方法只使用相同的本地引用,这里我们不会创建新的实例,而只是重新使用单个实例。 – rsakhale

+0

谢谢队友.... – ChanGan

相关问题