【发布时间】:2019-01-24 23:36:25
【问题描述】:
我听说将 WebDriver 实例和方法设置为静态是不好的做法。 我从我的代码中删除了它,但我现在遇到了问题: 我在类中遇到错误:方法中的“LoginPage.java”:“setLoginAndPassword()”:
该类型的方法 setValueInField(By, String) 未定义 登录页面
和:
方法 clickIn(By) 没有为 LoginPage 类型定义
如何解决?也许继承?但是 Java 不支持多重继承(类 LoginPage.java 必须扩展 ClickFunctions 和 InputFunctions
我的代码: 包:utils,类:Initialize.java:
public class Initialize {
protected WebDriver driver;
@BeforeClass
public void setUp(){
System.setProperty("webdriver.gecko.driver", "c:\\tests\\geckodriver.exe");
driver = new FirefoxDriver();
}
}
包:测试,类:MainTests.java
public class MainTests extends Initialize{
@Test
public void test(){
LoginPage loginPage = new LoginPage(driver);
loginPage.getLoginPage();
HomePage homePage = loginPage.setLoginAndPassword();
}
}
包:pageobjects,类:LoginPage.java:
public class LoginPage{
public LoginPage(WebDriver driver){
this.driver = driver;
}
private WebDriver driver;
private By login = By.cssSelector("#Login");
private By password = By.cssSelector("#Password");
private By submit = By.cssSelector("#submit");
public LoginPage getLoginPage(){
driver.get("https://verytest.pl");
return this;
}
public HomePage setLoginAndPassword(){
setValueInField(login,"anylogin");
setValueInField(password,"anypass");
clickIn(submit);
return new HomePage(driver);
}
}
包:函数,类:ClickFunctions.java:
public class ClickFunctions extends Initialize{
public void clickIn(By locator){
new WebDriverWait(driver,120).until(ExpectedConditions.elementToBeClickable(locator));
driver.findElement(locator).click();
}
}
包:函数,类:InputFunctions.java:
public class InputFuntions extends Initialize{
public void setValueInField(By locator, String fieldValue){
new WebDriverWait(driver,120).until(ExpectedConditions.visibilityOfElementLocated(locator));
driver.findElement(locator).sendKeys(fieldValue);
}
}
【问题讨论】:
标签: java selenium selenium-webdriver