如何在selenium webdriver中调用java类?

时间:2015-07-31 14:09:05

标签: java selenium selenium-ide

刚刚开始学习selenium-webdriver并尝试过......这里是我的dout吗?

下面创建了一个功能导航到谷歌主页

 
package UtilityGoogle;

import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver;

public class HomePage { WebDriver WD=null;

public static void main(WebDriver WD) { // TODO Auto-generated method stub WD = new FirefoxDriver(); WD.navigate().to("https://www.google.co.in"); WD.manage().window().maximize(); return; }

以及代码调用主页功能..

package GoogleMain;

import org.openqa.selenium.WebDriver;
import org.testng.AssertJUnit;
import org.testng.annotations.Test;
import UtilityGoogle.HomePage;

public class Google_Tc1 {
  private static WebDriver XP = null;@
  Test
  public void Open() {
    HomePage HP = new HomePage();
    String actual = XP.getTitle();
    String expected = "Google";
    AssertJUnit.assertEquals(expected, actual);
  }

}

获得以下错误....请帮我解决此问题

FAILED: Open
java.lang.NullPointerException
	at GoogleMain.Google_Tc1.Open(Google_Tc1.java:13)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)

4 个答案:

答案 0 :(得分:0)

您可以在此处将WebDriver设置为null

private static WebDriver XP = null;

然后在您的Open()方法中尝试使用它:

String actual = XP.getTitle();

堆栈跟踪通知您:

at GoogleMain.Google_Tc1.Open(Google_Tc1.java:13)

所以要修复它,请指定XP

答案 1 :(得分:0)

您的WebDriver XP instrance变量永远不会被初始化。 main中的HomePage方法永远不会被调用,即使它被调用也没关系,因为它不会操纵您尝试在测试中使用的XP变量。

我相信这是你想要实现的目标:

public class HomePage {

    public HomePage(WebDriver driver) {
        driver = new FirefoxDriver();
        driver.navigate().to("https://www.google.co.in");
        driver.manage().window().maximize();
    }

}

测试类:

public class GoogleTest {

    private static WebDriver driver;

    @Test
    public void Open() {
        HomePage homePage = new HomePage(driver);
        String actual = driver.getTitle();
        String expected = "Google";
        AssertJUnit.assertEquals(expected, actual);
    }

}

现在,当您创建HomePage的实例作为参数传递驱动程序时,驱动程序已初始化并可以使用。

我更改了变量名称,因为您使用的名称并不好。你应该阅读this。我也认为还有很多其他改进的余地。您可能应该阅读页面对象模型herehere,并尝试坚持使用它。

答案 2 :(得分:0)

就像你在Homepage课程的主要方法WD = new FirefoxDriver();中初始化WD一样 同样,你必须在使用之前初始化XP。



package GoogleMain;

import org.openqa.selenium.WebDriver;
import org.testng.AssertJUnit;
import org.testng.annotations.Test;
import UtilityGoogle.HomePage;

public class Google_Tc1 {
  private static WebDriver XP = new FirefoxDriver();@
  Test
  public void Open() {
    HomePage HP = new HomePage();
    String actual = XP.getTitle();
    String expected = "Google";
    AssertJUnit.assertEquals(expected, actual);
  }

}




答案 3 :(得分:0)

public class GoogleTest {

    private static WebDriver driver;

    @Test
    public void Open() {
        HomePage homePage = new HomePage(driver);
        String actual = driver.getTitle();
        String expected = "Google";
        AssertJUnit.assertEquals(expected, actual);
    }

}