Java 使用另一个类的方法有不同的方法吗?
我修好了。我扩展了Java 使用另一个类的方法有不同的方法吗?,java,selenium,Java,Selenium,我修好了。我扩展了AbstractPage,其中包含方法。首先,我会得到一个测试类必须有一个单一的无参数构造函数。然后我意识到在@Before中,驱动变量和启动变量在我删除它们之后出现了问题,我只调用了openchromedriver()方法,而openhomepage方法eclipse很高兴,它允许我运行测试并删除我必须调用类然后调用方法的部分。谢谢你的帮助 package seleniumTests.QA.com; public class Testforpage { private
AbstractPage
,其中包含方法。首先,我会得到一个测试类必须有一个单一的无参数构造函数。然后我意识到在@Before中,驱动变量和启动变量在我删除它们之后出现了问题,我只调用了openchromedriver()
方法,而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。我想让一个对代码知之甚少的人能够阅读测试,并且对测试所做的事情有一个很好的理解。测试唯一不同的地方是,它是我做出断言的地方。