我想通过一个导航器对象而不是直接调用很多页面对象来调用所有方法。
导航器模式的存在是为了在之前或之后做一些额外的事情,甚至代替将他的方法传递给 Page Objects。
所以,我找到了如何在 C# 中实现 Navigator 模式(它使用委托),但是我的项目用 Java 和所有 selenium 自动化测试框架(它使用 Selenium、Java 和 Testng)编写的也必须如此。
如何用 Java 编写以下代码(导航器模式)?(Java 中没有委托功能)。
导航界面:
public interface INavigator
{
TT Open<tt>() where TT : PageBase, new();
TT Navigate<tt>(Action action) where TT : PageBase, new();
void ClickAndWaitForText(Action action, string text);
...
}
}
navigator 的用法是这样的:
[TestFixture]
public class LoginTest
{
private SeleniumScope _scope;
private INavigator _navigator;
[TestFixtureSetUp]
public void Setup()
{
_scope = new SeleniumScope();
_navigator = new Navigator(_scope.Selenium);
}
[Test]
public void Login()
{
var login = _navigator.Open<LoginPage>();
login.User.SetText("admin");
login.Password.SetText("god");
_navigator.Navigate<HomePage>(login.ClickLogin);
}
PS 如您所见,它在 C# 中看起来不错,但是如何在 java 中编写 Navigator 模式?
但是如何在java中正确实现导航器模式呢?例如 _navigator.Navigate(login.ClickLogin);。_navigator 必须在为正确的对象“HomePage”执行传递的方法“login.ClickLogin”之前处理(比如添加 waitFor() 或其他东西)。与 C# 不同,Java 没有委托功能。