在java中经常使用Phantom来进行动态网页爬虫处理,由于phantom不再维护升级了,到后面的chrome也不再支持,所以改用webdriver。大家一定经常遇到stale element reference: element is not attach这种问题,新手遇到都是大概率事件。
因为我们的driver在加载页面的时候需要一些时间,如果不通过显示的等待,会经常出现stale element reference: element is not attach这个问题,这个问题的意思大概就是:你想要搜索的元素不在显示区域上,无法抵达。这种情况你可以在前面加上一个sleep(2),等待2秒后,他就能自动滑动浏览器到元素所在位置,这个时候就不会再报错了。
另外在使用headless模式的时候也会造成这样的问题,这个时候可以把浏览器的窗口最大化,代码如下:
chrome_options.add_argument('--headless')
chrome_options.add_argument("--window-size=1920,1080")
chrome_options.add_argument("--start-maximized")
确保窗口最大化,可以看见更多的元素,就能减少报错的几率。当然有些元素被遮罩层遮住,也会出类似的异常信息。所以建议新手们多尝试,多积极解决问题。