Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Selenium WebDriver POM处理复合类_Java_Selenium Webdriver_Nullpointerexception - Fatal编程技术网

Java Selenium WebDriver POM处理复合类

Java Selenium WebDriver POM处理复合类,java,selenium-webdriver,nullpointerexception,Java,Selenium Webdriver,Nullpointerexception,我是selenium的新手,在我的代码中遇到了空指针异常, 下面是我的一个页面对象(登录页面)的一个类 这是我的测试用例代码 package TestCases; import org.testng.annotations.Test; import Lib.lib; import Pages.LoginPage; public class logging_in extends lib { LoginPage memLogin = new LoginPage(driver);

我是selenium的新手,在我的代码中遇到了空指针异常, 下面是我的一个页面对象(登录页面)的一个类

这是我的测试用例代码

package TestCases;

import org.testng.annotations.Test;

import Lib.lib;
import Pages.LoginPage;

public class logging_in extends lib {
    LoginPage memLogin = new LoginPage(driver);

    @Test
    public void user_login() throws Exception
    {

        memLogin.loginToKB("uzii@test.com", "uziii");

    }

}
我正在从lib类导入chrome驱动程序配置,如下所示:

package Lib;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.AfterTest;

public class lib {

    protected static WebDriver driver = null;

    @BeforeTest
    public void chrome_extension()
    {
        System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--start-maximized");
        driver = new ChromeDriver(options);
        driver.get("http://www.testsite.com");
    }


    @AfterTest
    public void quit()
    {
        driver.quit();
    }

}
当我运行我的测试用例(登录)时,我最初重定向到网站页面,但之后它停止执行并给我复合类错误

错误似乎指向了这一点

By signInBtn=By.className(“btn btn主btn lg”)

请让我知道,如何处理复合类。如有任何帮助/反馈,将不胜感激。谢谢

  • 您正在向LoginPage(Webdriver)构造函数传递静态驱动程序实例,而不进行初始化。您需要在lib中的static块中或在logging_in页面中初始化memLogin变量之前初始化驱动器
  • 对于复合类,必须使用XPath。如果您可以向我们展示DOM的html片段,我们应该能够告诉您相关的XPath
  • 您在类库中将web驱动程序实例声明为private,这是正确的,然后您在类登录页中再次声明web驱动程序实例,这是错误的


    删除第二个声明以避免空指针异常。

    您已在类库中将webdriver实例声明为private,这是正确的,然后您的e再次在类登录页中声明webdriver实例,这是错误的。@Rupshshinde非常感谢,这已得到解决。你能告诉我如何处理复合类名吗。我收到一个错误org.openqa.selenium.InvalidSelectorException:无效选择器:不允许使用复合类名,它似乎就是这个,By signInBtn=By.className(“btn btn主btn lg”);知道如何处理这些问题吗?@Uziii请注意,如果您希望更改问题,请编辑您的原始请求,否则您将被标记为以不正确的方式提问way@MrunalGosar我刚才会这么做。。。谢谢你让我知道。
    package Lib;
    
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.chrome.ChromeOptions;
    import org.testng.annotations.BeforeTest;
    import org.testng.annotations.AfterTest;
    
    public class lib {
    
        protected static WebDriver driver = null;
    
        @BeforeTest
        public void chrome_extension()
        {
            System.setProperty("webdriver.chrome.driver", "chromedriver.exe");
            ChromeOptions options = new ChromeOptions();
            options.addArguments("--start-maximized");
            driver = new ChromeDriver(options);
            driver.get("http://www.testsite.com");
        }
    
    
        @AfterTest
        public void quit()
        {
            driver.quit();
        }
    
    }