从特定元素获取文本时出现 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
。我曾尝试使用xpath
、cssSelector
,但它不起作用。
*更新:我已经解决了我的问题。我只是将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”不能与数组文字一起使用
在更改事件中将文本附加到 Summernote 元素时出现问题
将输入字段聚焦在React组件中 - 尝试创建ref时出现类型错误
Sqoop - 尝试连接到 Oracle DB 服务器时出现 java.lang.NullPointerException