从特定元素获取文本时出现 NullPointerException [重复]

Posted

技术标签:

【中文标题】从特定元素获取文本时出现 NullPointerException [重复]【英文标题】:NullPointerException when getting text from a specific element [duplicate] 【发布时间】:2017-04-23 09:50:41 【问题描述】:

我正在学习如何使用 java 来使用 selenium。我有问题。有html代码:

<h2 class="cart-popup-product__title">Laptop Dell XPS 13 2015 13.3inch Touch (Xám) - Hàng nhập khẩu</h2>

这是我获取文本的代码:

By productName = By.className("cart-popup-product__title");
public String ProductName()
    String pn = driver.findElement(productName).getText();
    return pn;

Eclipse 显示错误消息:NullPointerException。我曾尝试使用xpathcssSelector,但它不起作用。

*更新:我已经解决了我的问题。我只是将this.driver = driver; 添加到构造函数中。初始化构造函数时忘记添加了。

感谢大家帮助我改进。

【问题讨论】:

请看How to Ask和minimal reproducible example 您应该尝试找出哪个变量为空。司机? 他应该阅读并附上堆栈跟踪,这样我们就不会猜测了。 我在 2 天前遇到了这个问题。我尝试使用许多解决方案:搜索、调试。根据我到目前为止的知识,我无法解决这个问题。所以我决定在那里问。谢谢大家帮助我。 至少显示你的堆栈跟踪。我们无法确定是哪个产生了NPE 【参考方案1】:

它可以是具有相同类名但没有任何文本的另一个元素。

FindElement() 方法不会抛出 NoSuchElementException - 这是找到元素的明确标志。

是否可以通过以下定位器在浏览器控制台中找到元素? 您也可以尝试找到所需元素的父元素,然后调用 getText() 方法。

【讨论】:

WebElement 没有文本将给出一个空的String,而不是null。即使它是空的,OP 也不会对它做任何事情,所以它不会导致NullPointerException 感谢您的支持。我已经解决了我的问题。只需将this.driver = driver; 添加到构造函数即可。

以上是关于从特定元素获取文本时出现 NullPointerException [重复]的主要内容,如果未能解决你的问题,请参考以下文章

从 DynamoDB 获取项目时出现“提供的关键元素与架构不匹配”错误

尝试从数组中删除元素时出现此错误:上下文类型“Int”不能与数组文字一起使用

尝试从URL获取参数时出现异常

在更改事件中将文本附加到 Summernote 元素时出现问题

将输入字段聚焦在React组件中 - 尝试创建ref时出现类型错误

Sqoop - 尝试连接到 Oracle DB 服务器时出现 java.lang.NullPointerException