请原谅本文中的术语问题。这似乎是一个基本的 Java 问题,我只是在搜索中找不到结果。
我想创建一个可能会在 Selenium pageObject 框架中返回多种类型的方法。请参见下面的示例:
public class ProductPage extends BasePage {
public ProductPage(WebDriver driver) {
super(driver);
}
public ProductPage enterValue(String inputText) {
driver.findElement(By.id("someId")).sendKeys(inputText);
return this;
}
enterValue 方法有时会登陆到与 ProductPage 不同的页面。如果我知道它可以导航到其他地方,我倾向于创建一个不同的方法。但是,这会使其他人更难理解和维护测试。
有没有办法混淆返回类型并在方法中添加条件以允许方法返回不同的类型?这是我最好的尝试:
public NotSureWhatToPutHere enterValue(String inputText) {
driver.findElement(By.id("someId")).sendKeys(inputText);
if(isAlertPresent){
return new ProductAlertPage(driver);
} else if (isErrorDisplayed) {
return new ErrorPage(driver);
} else {
return this;
}
}
最佳答案
你需要使用多态或者继承。
因此 ProductAlertPage
和 ErrorPage
都继承自 interface
或 class
,例如页面
。然后你可以得到 Page
的返回类型。
在你的情况下 ErrorPage
和 ProductAlertPage
也应该扩展 BasePage
然后你可以返回 BasePage
作为返回类型.
public BasePage enterValue(String inputText) {
driver.findElement(By.id("someId")).sendKeys(inputText);
if(isAlertPresent){
return new ProductAlertPage(driver);
} else if (isErrorDisplayed) {
return new ErrorPage(driver);
} else {
return this;
}
}
关于java - 如何创建具有条件返回类型的类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54190077/