【问题标题】:How to call a java class in selenium webdriver?如何在 selenium webdriver 中调用 java 类?
【发布时间】:2015-10-23 06:06:26
【问题描述】:

刚开始学习 selenium-webdriver 并且也在尝试....soo 这是我的dout吗?

下面创建了一个导航到谷歌主页的函数

包实用程序谷歌;

导入 org.openqa.selenium.WebDriver; 导入 org.openqa.selenium.firefox.FirefoxDriver;

公共类主页{ 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)

【问题讨论】:

    标签: java selenium selenium-ide


    【解决方案1】:
    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);
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      就像你在 Homepage 类的 main 方法中初始化了 WD,WD = new FirefoxDriver();
      同样,您必须在使用 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);
        }
      
      }

      【讨论】:

      • 首先感谢@Sourabh 的快速回复,所以我正在努力修复代码'private static WebDriver XP = new FirefoxDriver();'的下面标记此行有多个标记 - 构造函数 HomePage(WebDriver) 未定义 - Watchpoint:Google_Tc1 [访问和修改] - 驱动程序
      【解决方案3】:

      您的 WebDriver XP 实例变量永远不会被初始化。 HomePage 中的 main 方法永远不会被调用,即使调用它也没关系,因为它不会操纵您尝试在测试中使用的 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。我也认为还有很多其他改进的空间。您可能应该阅读有关页面对象模型here 和here 并尝试坚持下去。

      【讨论】:

      • 首先感谢@ThiagoPorciúncula 的快速回复,所以我正在努力修复代码'HomePage homePage = new HomePage(driver)'的下方标记此行的多个标记-构造函数HomePage( WebDriver) 未定义 -Watchpoint:Google_Tc1 [访问和修改] - 驱动程序
      【解决方案4】:

      您在此处将 WebDriver 设置为 null:

      private static WebDriver XP = null;
      

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

      String actual = XP.getTitle();
      

      堆栈跟踪会通知您:

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

      所以要修复它分配XP

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-10
        • 2012-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-27
        • 2012-04-14
        • 2019-09-24
        相关资源
        最近更新 更多