![](/img/trans.png)
[英]Exception in thread "main" java.lang.NullPointerException when trying to run a test case in Selenium with Java
[英]Receiving “Exception in thread ”main“ java.lang.NullPointerException” when using Selenium
在Selenium WebDriver中使用此類時:
package Selenium3;
import java.util.ArrayList;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
public class Jobs {
static WebDriver driver;
public Jobs(WebDriver driver) {
this.driver = driver;
}
public static void con() throws InterruptedException {
List<WebElement> element = driver.findElements(By.cssSelector(".position_title.ng-binding"));
for (int i = 0; i < element.size(); i++) {
Thread.sleep(2000);
String u = element.get(i).getText();
if (u.contains("Java"));
System.out.println(u);
}
}
}
驅動程序始終為null。 最后,我想從我的Main類中調用此方法。 我究竟做錯了什么?
您有一個static
方法(不需要類實例化)...因此,當您在不實例化類的情況下調用該方法時,您將不會初始化驅動程序:
您有各種解決方案:
使方法不是static
(您將使用構造函數強制執行驅動程序的初始化,但可以多次重用實例化的類)
public class Jobs { private WebDriver driver; public Jobs(WebDriver driver) { this.driver = driver; } public void con() throws InterruptedException { List<WebElement> element = driver.findElements(By.cssSelector(".position_title.ng-binding")); for (int i = 0; i < element.size(); i++) { Thread.sleep(2000); String u = element.get(i).getText(); if (u.contains("Java")); System.out.println(u); } }
保持將方法static
添加驅動程序作為參數 (因此您將在調用方法之前擁有驅動程序,並且無需實例化該類)
public class Jobs { public static void con(WebDriver driver) throws InterruptedException { List<WebElement> element = driver.findElements(By.cssSelector(".position_title.ng-binding")); for (int i = 0; i < element.size(); i++) { Thread.sleep(2000); String u = element.get(i).getText(); if (u.contains("Java")); System.out.println(u); } }
使用static
塊在方法靜態調用之前初始化驅動程序 (調用速度更快,但是問題是您無法選擇將使用的驅動程序實現)
public class Jobs { static WebDriver driver; static { this.driver = new FirefoxDriver(); // just an example } public static void con() throws InterruptedException { List<WebElement> element = driver.findElements(By.cssSelector(".position_title.ng-binding")); for (int i = 0; i < element.size(); i++) { Thread.sleep(2000); String u = element.get(i).getText(); if (u.contains("Java")); System.out.println(u); } }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.