是否有不同的方法来使用另一个类的方法?

时间:2015-06-19 22:28:42

标签: java selenium

我修好了。我扩展了方法所在的AbstractPage。起初我会得到一个Test类必须有一个单数的无参数构造函数。然后我意识到在@Before中驱动程序变量和启动变量在我删除它们之后出现了问题并且只是调用了开放的chromedriver()方法而且openhomepage方法eclipse很高兴它允许我运行测试并删除我必须调用该类的部分,然后删除该方法。谢谢你的帮助。

package seleniumTests.QA.com;


public class Testforpage {

private WebDriver driver;

@Before
public void SetUp() {
    AbstractPage startUp = new AbstractPage(driver);
    driver = startUp.openChromeDriver();
    onRegistrationPage = new RegistrationPage(driver);
    onRegistrationPage.openHomePage(driver);
}

@Test
public void register() {
    onRegistrationPage.clickOn(onRegistrationPage.REGISTRATION_LINK);
    assertEquals(onRegistrationPage.getURL(),"http://demoqa.com/registration/");
    // Write first name**
    onRegistrationPage.type(onRegistrationPage.FIRST_NAME_INPUT, "User");
    // Write last name
    onRegistrationPage.type(onRegistrationPage.LAST_NAME_INPUT, "Dev");
    // click marrital status
    onRegistrationPage.clickOn(onRegistrationPage.MARITAL_STATUS_BUTTON); 
    // click hobby
    onRegistrationPage.clickOn(onRegistrationPage.HOBBY_BUTTON);

这就是代码现在的样子。

  public class Testforpage extends AbstractPage {


   public Testforpage() {
     }

@Before
public void SetUp() {
    driver = openChromeDriver();
    openHomePage(driver);
}

@Test
public void register() {
    clickOn(REGISTRATION_LINK);
    assertEquals(getURL(),"http://demoqa.com/registration/");
    // Write first name**
    type(FIRST_NAME_INPUT, "User");
    // Write last name
    type(LAST_NAME_INPUT, "Dev");
    // click marrital status
    clickOn(MARITAL_STATUS_BUTTON);

2 个答案:

答案 0 :(得分:0)

你根本没有扩展/继承,而是使用RegistrationPage类。出于这个原因,有必要键入onRegistrationPage部分,因此您的代码(以及Java编译器)的读者可以清楚地看到您正在调用onRegistrationPage的方法而不是其他方法对象

如果您想修改此代码,可以在RegistrationPage或子类中使用单个方法,其中该方法需要足够的参数来执行所有typeclickOn调用使用Testforpage的一个方法调用。

答案 1 :(得分:0)

如果要调用位于RegistrationPage类中的方法,通常需要有一个实例,以便编译器知道您调用的clickOn方法。

你可以在没有实例的情况下通过制作方法static来执行此操作,然后可以调用RegistrationPage.clickOn,但是将其更改为static还有其他含义,您应该阅读。

另一个解决方案是使RegistrationPage成为父类/接口,让下层继承它,然后你就可以调用clickOn;但是让测试类继承自非测试类并没有多大意义。