【问题标题】:NullPointer Exception In running testCases via Selenium webDriver in Chrome在 Chrome 中通过 Selenium webDriver 运行测试用例时出现 NullPointer 异常
【发布时间】:2012-02-23 03:13:33
【问题描述】:

我正在尝试在 Chrome 上运行我的测试用例,并且我已经在属性文件中复制了路径,但控制台仍然会抛出令人讨厌的语句,例如: 错误:chromedriver 可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置;有关详细信息,请参阅http://code.google.com/p/selenium/wiki/ChromeDriver。最新版本可从http://code.google.com/p/chromium/downloads/list下载 配置失败:@BeforeTest startWebSession java.lang.NullPointerException

【问题讨论】:

    标签: selenium webdriver selenium-webdriver


    【解决方案1】:

    我发现的一件事是无法从 Eclipse 中启动 Chrome 驱动程序。它必须从命令提示符运行。至少在 Windows 7 64 位 上。

    试图从 Eclipse 中运行它会产生这个异常:

    线程“main”中的异常 java.lang.IllegalStateException:webdriver.chrome.driver 系统属性定义的 chromedriver 可执行文件不存在:C:\Windows\System32\chromedriver.exe

    只有 Chrome 才会出现此问题。 IE 和 FireFox 在 Eclipse 中运行良好。

    【讨论】:

    • 这可能是操作系统的问题,我会在尝试后更新。
    【解决方案2】:

    http://code.google.com/p/chromedriver/downloads/list下载chrome驱动

    用以下方式初始化你的驱动对象 -

    System.setProperty("webdriver.chrome.driver","C:\\chromedriver.exe");
    
        WebDriver driver = new ChromeDriver();
    

    通过这样做,chrome 驱动程序可以正常工作。

    【讨论】:

    • 有两种方法可以做到这一点:一种是基于系统的 setProperty 东西,可以通过为 IEdriver 提供 relativePath(Selenium 提供它)来设置,对于 chrome 也会发生同样的情况:@ 987654323@ File file = new File("C:\\Documents and Settings\\tools\\iedriver_32\\IEDriverServer.exe"); System.setProperty("webdriver.ie.driver", file.getAbsolutePath()); WebDriver driver = new InternetExplorerDriver(); code 现在用户可以从上面迈克提到的命令提示符启动 thre 驱动程序。
    【解决方案3】:

    这是我如何初始化 ChromeDriver:

    public RegulationUI() throws Exception{
       ChromeDriverService service = ChromeDriverService.createDefaultService();
       File file = new File(RegulationUI.class.getResource("/chromedriver.exe").toURI());
       System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, file.getAbsolutePath());                
       ChromeOptions options = new ChromeOptions();
       options.addArguments("--start-maximized");
       driver = new ChromeDriver(service,options);
    }
    

    顺便说一句,我的测试类被命名为RegulationUI

    试试这个,它对我有用,而且,我知道这是“多计算机”解决方案 - 我们的项目处于颠覆状态,这样每个人都可以运行它,即使我们在磁盘上的“工作文件夹”位置进行了不同的设置" 对于 IDE 是

    【讨论】:

    • 嘿帕维尔,我试过:
      if (BrowserType.toLowerCase().equals("chrome")) { DesiredCapabilities chromecapabilities = DesiredCapabilities.chrome(); chromecapabilities.setCapability("chrome.binary", "C:/workspaceNewSFDC/HI_SalesForce"); ChromeDriverService 服务 = new ChromeDriverService.Builder() .usingChromeDriverExecutable(new File("C:/workspaceNewSFDC/HI_SalesForce/chromedriver.exe")) .usingAnyFreePort() .build();服务.start();驱动程序=新的C​​hromeDriver(服务); } }
    • 我有 Java 并且不是很好的程序员,但是:我相信路径中应该始终包含“chromedriver.exe”
    • 我已经在我的属性文件中粘贴了 ChromeDriver.exe 的路径。但是每次我运行我的测试用例控制台时都会抛出同样的错误!
    【解决方案4】:
        Please download chromedriver.exe for Google chrome browser 
        please download IEdriver.exe for Internet explore.
    

    为了简单起见,请将这些文件保存在 Windows 的根文件夹中。让我们考虑安装在 c:\(C 驱动程序)上的操作系统,在 C 驱动器上创建一个名为 Selenium 的文件夹并保留这些二进制(.exe)文件。像 c:\selenium

        in your Testcase/testScript Write as 
    
        //For Chrome Browser:
        Webdriver driver = new ChromeDriver();
        java.io.File file = new File("c:\\selenium\\chromedriver.exe");     
        System.setProperty("webdriver.chrome.driver", file.getAbsolutePath());
    

    【讨论】:

      【解决方案5】:

      如果您使用的是 maven,请尝试在您的 pom 中使用以下内容:

          <dependency>
              <groupId>io.github.bonigarcia</groupId>
              <artifactId>webdrivermanager</artifactId>
              <version>RELEASE</version>
          </dependency> 
      

      并在您的设置中将其用于 chrome:

          ChromeDriverManager.getInstance().setup();
          driver = new ChromeDriver();
      

      【讨论】:

      • 我遇到了同样的问题,当我尝试在 IntelliJ IDE 中运行 Chrome 时出现 null.PointerException。我可以运行 IE11 OK 但不能运行 Chrome。我在这个线程中尝试了所有这些建议,但没有解决我的问题。这是我当前配置 Chrome 的方式: ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.setBinary(RunConfiguration.getBrowserPath()); chromeOptions.addArguments("--ignore-certificate-errors"); System.setProperty("webdriver.chrome.driver", RunConfiguration.getBrowserDriverPath()); webDriver = new ChromeDriver(chromeOptions);}
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-24
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-16
      • 1970-01-01
      相关资源
      最近更新 更多