java - 如何将 selenium webdriver 实例传递给另一个类

标签 java selenium selenium-webdriver

我浏览了该网站,但没有找到我正在寻找的答案。

我有

  1. 超基类 - 在这里我只是创建一个网络驱动程序的对象
  2. Baseclass- 在这个类中,我扩展了 Superbase 类,调用驱动程序,并打开 URL。
  3. 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
}

你能在这里指导我吗?我怎样才能达到同样的效果。

非常感谢!

最佳答案

SuperClassBaseClass 是非常糟糕的名字。不要使用编码语言来命名你的类使用问题的语言。在这种情况下,网站应用程序测试,使用 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/

相关文章:

java - Android 上复杂数学过程中的 Stackoverflow

java - 如何仅使用Java在vaadin中创建Spring Security登录页面?

java - Maven 项目不会在 selenium 项目的 test-output 文件夹中生成 testng 结果

java - 删除 CSV 中的空白行

python - 如何将嵌套在 div 下的所有 div 抓取到列表中?

javascript - 在节点的 selenium-webdriver 中为 phantomjs 设置 service_args

java - Android RxJava map 函数中的异步调用

java - 确保每次调用 B(抽象实现的方法)后调用方法 A?

python - Selenium 单击到下一页直到最后一页

python - 消息: unknown error: Chrome failed to start: exited abnormally on AWS Cloud9 with Linux 4. 9.85-38.58.amzn1.x86_64 x86_64