我浏览了该网站,但没有找到我正在寻找的答案。
我有
- 超基类 - 在这里我只是创建一个网络驱动程序的对象
- Baseclass- 在这个类中,我扩展了 Superbase 类,调用驱动程序,并打开 URL。
- Clicklink 类——在这个类中,我再次扩展了 Superbase 类,但只发现了一个空指针异常。我想我遇到了异常,因为驱动程序对象未初始化。
我只是一个初学者,并没有尝试过browserfactory和其他选项,因为我想从简单的流程开始。
父类(super class)
Public class Superclass
{
public webdriver Driver;
}
基类
public class Baseclass extends Superclass
{
setting capabilities and launching the browser
}
点击链接
public class Clicklink extends Superclass
{
here I want to click on a link
driver.findelement(by.xpath("xpath").click());
// after this statement I get a null pointer exception
}
你能在这里指导我吗?我怎样才能达到同样的效果。
非常感谢!
最佳答案
SuperClass
和 BaseClass
是非常糟糕的名字。不要使用编码语言来命名你的类使用问题的语言。在这种情况下,网站应用程序测试,使用 LoginPage、CartPage、ProfilePage 等。使用 Page Object Pattern .
我建议您使用工厂模式为每个测试提供 WebDriver 实例。由于所有这些都符合是页面的想法,因此使用标准 PageObject 的类扩展来提供此功能。导航时,让当前页面构造新页面的实例并将当前 webDriver
连接实例传递给它。然后,您应用于该 PageObject 的任何操作都将自动应用于该 webDriver 实例及其关联的浏览器实例。您还应该使用 PageFactory
来提供 pageObject 的实例。
public abstract class PageObject {
public WebDriver driver;
PageObject() {
// Page can initialise its self
this.driver = BrowserFactory.webDriver();
}
PageObject(final WebDriver webDriver) {
this.driver = webDriver;
}
}
关于java - 如何将 selenium webdriver 实例传递给另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42331659/