我修好了。我扩展了方法所在的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);
答案 0 :(得分:0)
你根本没有扩展/继承,而是使用RegistrationPage
类。出于这个原因,有必要键入onRegistrationPage
部分,因此您的代码(以及Java编译器)的读者可以清楚地看到您正在调用onRegistrationPage
的方法而不是其他方法对象
如果您想修改此代码,可以在RegistrationPage
或子类中使用单个方法,其中该方法需要足够的参数来执行所有type
和clickOn
调用使用Testforpage
的一个方法调用。
答案 1 :(得分:0)
如果要调用位于RegistrationPage
类中的方法,通常需要有一个实例,以便编译器知道您调用的clickOn
方法。
你可以在没有实例的情况下通过制作方法static
来执行此操作,然后可以调用RegistrationPage.clickOn,但是将其更改为static还有其他含义,您应该阅读。
另一个解决方案是使RegistrationPage成为父类/接口,让下层继承它,然后你就可以调用clickOn
;但是让测试类继承自非测试类并没有多大意义。