Java 使用另一个类的方法有不同的方法吗?

Java 使用另一个类的方法有不同的方法吗?,java,selenium,Java,Selenium,我修好了。我扩展了AbstractPage,其中包含方法。首先,我会得到一个测试类必须有一个单一的无参数构造函数。然后我意识到在@Before中,驱动变量和启动变量在我删除它们之后出现了问题,我只调用了openchromedriver()方法,而openhomepage方法eclipse很高兴,它允许我运行测试并删除我必须调用类然后调用方法的部分。谢谢你的帮助 package seleniumTests.QA.com; public class Testforpage { private

我修好了。我扩展了
AbstractPage
,其中包含方法。首先,我会得到一个测试类必须有一个单一的无参数构造函数。然后我意识到在@Before中,驱动变量和启动变量在我删除它们之后出现了问题,我只调用了open
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);

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


如果您想修改此代码,可以使用
RegistrationPage
中的单个方法或子类,如果该方法需要足够的参数来执行所有的
类型
点击
调用,只需从
Testforpage

调用一个方法。如果要调用位于
注册页面
类中的方法,通常需要有该方法的实例,以便编译器知道要调用的
点击
方法你在打电话

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


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

我建议,至少将原始(或最新修订版)发布为“保留”版本。在没有问题的情况下,我们有两个答案现在毫无意义。你有没有理由不能删除你自己的问题?我认为删除您自己的问题/答案/评论没有声誉要求。请重新打开请求。我花了一些时间思考这个问题,在其中一个答案的帮助下,我找到了答案。我还发布了我的问题的解决方案。我使用了低级选项。我使用抽象页面来完成您通常在测试类中编写的所有内容,如查找元素和单击或查找元素和sendkeys。我想让一个对代码知之甚少的人能够阅读测试,并且对测试所做的事情有一个很好的理解。测试唯一不同的地方是,它是我做出断言的地方。