gpt4 book ai didi

java - 在 selenium 中创建页面对象模块时出错 对于示例测试测试用例

转载 作者:行者123 更新时间:2023-12-02 01:37:09 25 4
gpt4 key购买 nike

我尝试使用 PageObjectModel 在 Selenium 中创建一个简单的程序。运行程序时会抛出空指针异常。不知道我做错了什么。我的变量初始化是错误的吗?我知道我在初始化按定位器时犯了错误,但不知道我做错了什么。

    public class main extends Base{

private static final int TIMEOUT = 5;
private static final int POLLING = 100;

protected WebDriverWait wait;
protected static WebElement ele;
protected By locator;

public void Base() {
wait = new WebDriverWait(driver, TIMEOUT, POLLING);
}

public WebElement waitForElementToAppear(By locator) {
wait.until(ExpectedConditions.presenceOfElementLocated(locator));//Line which Throws Null
return ele;
}

protected void waitForElementToDisappear(By locator) {
wait.until(ExpectedConditions.invisibilityOfElementLocated(locator));
}

protected void waitForTextToDisappear(By locator, String text) {
wait.until(ExpectedConditions.not(ExpectedConditions.textToBe(locator, text)));
}
@Test()
public void getURL() {
driver.get("https://www.google.com");
waitForElementToAppear(By.name("q")).sendKeys("Pom");// Line Which Throws Null.

}

还有我的基类代码,我在其中保存了驱动程序的属性。

 public class Base {
protected WebDriver driver;

public WebDriver getDriver() {
return driver;
}

public void setDriver(WebDriver driver) {
this.driver = driver;
}
@BeforeSuite
public void beforeSuite() {
System.setProperty("webdriver.chrome.driver", "D:\\Selenium\\chromedriver.exe"); // You can set this property elsewhere
driver=new ChromeDriver();
driver.manage().window().maximize();

}
}

最佳答案

问题在于您初始化 WebDriverWait 对象的方式。

仅当 @BeforeSuite 方法在 Base 类中运行时,您的 WebDriver 对象才会被实例化。

初始化 WebDriverWait 的逻辑是 main 类中 public void Base() 方法的一部分。

但是您的 @Test 注释的 getURL() 方法不会调用 Base() 方法。所以你的 wait 对象始终为 null。

要解决此问题,请在 @Test 方法中调用 Base() 或使用 @ 注解您的 Base() 方法BeforeClass 注解,以便 TestNG 自动调用它。

关于java - 在 selenium 中创建页面对象模块时出错 对于示例测试测试用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55085521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com