【已解决】 selenium解析页面链接打包为jar文件后报错element.getAttribute()处空指针NullPointerException

当使用selenium+Chrome在Windows系统下开发的爬虫程序被打包成jar并运行在CentOS系统时,element.getAttribute()出现NullPointerException。问题源于在CentOS上运行时缺少selenium-server-4.0.0-alpha-4.jar的依赖。通过将该jar包添加到项目构建路径,然后重新打包和运行,解决了此问题。

解决java使用selenium+chrome解析页面链接时发现只能得到链接的文本,使用element.getAttribute()获取链接等其它属性时报错(错误指示element.getAttribute()处空指针)。


问题描述

         在java中使用selenium+Chrome实现爬虫程序时,对爬取到的链接进行解析,在本地Windows系统下解析完全没有问题,但是导出jar文件后,放在centos系统下运行,可以解析到链接的文本,但是使用ement.getAttribute()获取链接等其它属性时报错,不管是什么属性,都提示ement.getAttribute()处NullPointerException的空指针错误。


原因分析:

        在本地Windows系统下解析完全没有问,导出jar文件后放在centos系统下运行,我一开始猜测原因主要有两种:

 1)系统环境不一样,代码或者jar包有兼容性问题

 2)项目导出jar包后,使用到的第三方依赖jar包没有正确导出

        根据这两个方向,我首先在centos的电脑上也安装了eclipse,直接运行代码,发现也报错。那

在使用 Selenium 进行自动化测试时,遇到 `stale element reference: stale element not found` 错误通常是因为元素在获取后被重新加载或从 DOM 中移除,即使元素最初是成功获取的。以下是一些可能的原因和解决方法: ### 可能的原因 1. **页面刷新或重新加载**:在获取元素后,页面发生了刷新或重新加载,导致元素引用失效。 2. **DOM 变化**:在获取元素后,DOM 结构发生了变化,导致元素引用失效。 3. **异步加载**:页面中的内容是通过 JavaScript 异步加载的,获取元素时内容尚未加载完成。 ### 解决方法 1. **使用显式等待**:在操作元素之前,使用显式等待确保元素已加载并可见。 ```python from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, 10) element = wait.until(EC.visibility_of_element_located((By.ID, 'element_id'))) element.screenshot('screenshot.png') ``` 2. **重新获取元素**:在操作元素之前,重新获取元素引用。 ```python element = driver.find_element(By.ID, 'element_id') element.screenshot('screenshot.png') ``` 3. **检查页面是否刷新**:如果页面在操作过程中可能刷新,使用 try-except 块重新获取元素。 ```python try: element = driver.find_element(By.ID, 'element_id') element.screenshot('screenshot.png') except StaleElementReferenceException: element = driver.find_element(By.ID, 'element_id') element.screenshot('screenshot.png') ``` 4. **确保元素可见**:确保元素在操作时是可见的。 ```python wait = WebDriverWait(driver, 10) element = wait.until(EC.visibility_of_element_located((By.ID, 'element_id'))) element.screenshot('screenshot.png') ``` 通过这些方法,可以有效避免 `stale element reference` 错误,确保元素操作的稳定性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳光宅男xxb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值