gpt4 book ai didi

java - 尝试使用 Java 在 Selenium 中运行测试用例时线程 "main"java.lang.NullPointerException 中的异常

转载 作者:行者123 更新时间:2023-12-04 03:30:17 24 4
gpt4 key购买 nike

这是我的 Java 代码:

package test;

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;

public class FirstSeleniumTest {

public static WebDriver driver;

public static void main(String[] args) {

System.setProperty("webdriver.chrome.driver","C:\\Users\\35196\\IdeaProjects\\selenium test\\SeleniumTest\\lib\\seleniumjars\\chromedriver.exe");

driver = new ChromeDriver();

driver.navigate().to("https://foodplanhealth.herokuapp.com/login");

driver.manage().window().maximize();

driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

WebElement root1 = driver.findElement(By.cssSelector("my-app"));
WebElement shadow_root1 = expand_shadow_element(root1);

WebElement root2 = shadow_root1.findElement(By.cssSelector("mwc-drawer"));
WebElement shadow_root2= expand_shadow_element(root2);

WebElement root3 = shadow_root2.findElement(By.name("appContent"));
WebElement shadow_root3 = expand_shadow_element(root3);

WebElement root4 = shadow_root3.findElement(By.tagName("div#main-content"));
WebElement shadow_root4 = expand_shadow_element(root4);

WebElement root5 = shadow_root4.findElement(By.cssSelector("div#container"));
WebElement shadow_root5 = expand_shadow_element(root5);

WebElement root6 = shadow_root5.findElement(By.cssSelector("login-container"));
WebElement shadow_root6 = expand_shadow_element(root6);

WebElement root7 = shadow_root6.findElement(By.cssSelector("mwc-textfield"));
WebElement shadow_root7 = expand_shadow_element(root7);

WebElement root8 = shadow_root7.findElement(By.cssSelector("mdc-text-field__ripple"));
WebElement shadow_root8 = expand_shadow_element(root8);

WebElement login = shadow_root8.findElement(By.cssSelector("mdc-text-field__input"));

String js = "arguments[0].setAttribute('value','random@email.com')";
((JavascriptExecutor) driver).executeScript(js, login);

}

public static WebElement expand_shadow_element(WebElement element)
{
return (WebElement)((JavascriptExecutor)driver).executeScript("return arguments[0].shadowRoot", element);
}
}

代码运行良好,直到第 35 行WebElement root4 = shadow_root3.findElement(By.tagName("div#main-content"));我在哪里得到这个错误

Exception in thread "main" java.lang.NullPointerException attest.FirstSeleniumTest.main(FirstSeleniumTest.java:35)

我知道整个代码是不正确和不完整的,但由于这个错误我无法继续前进。我只是不明白为什么它在这一点之前可以正常工作,但在这一点上却没有。我向某人寻求帮助,他们告诉我代码对他们来说运行良好,我检查了 chrome 驱动程序版本,它与浏览器版本匹配。

谁能告诉我哪里出了问题?

最佳答案

A NullPointerException始终暗示空指针已被解引用,方法是在空引用后计算句点,或者将空指针作为数组索引。

让我们在您的源代码行中研究这个案例:

WebElement root4 = shadow_root3.findElement(By.tagName("div#main-content")); 

解引用运算符(句点)只出现了两次:我们必须丢弃 By 之后的那个。 ,因为它是一个类,不能为空。所以我们只剩下一个罪魁祸首:shadow_root3肯定是空的。

下一步:为什么 shadow_root3一片空白?它在前一行中被初始化:

root3 = shadow_root2.findElement(By.name("appContent"));
WebElement shadow_root3 = expand_shadow_element(root3);

方法expand_shadow_element返回 shadowRoot输入的参数(如果没有则为 null),因此我们必须得出结论,名为 appContent 的 DOM 元素没有 shadowRoot设置。

从这里开始,您必须调试您的 HTML 页面以诊断它为什么没有 shadowRoot , 以及如何正确设置它。

关于java - 尝试使用 Java 在 Selenium 中运行测试用例时线程 "main"java.lang.NullPointerException 中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67023950/

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