Java使用phantomjs://platform/console++.js:263

在使用PhantomJS无头浏览器时遇到console++.js:263错误,问题在于元素未加载导致操作失败。解决方法包括程序休眠等待元素加载,或者采用循环重试机制。尽管如此,由于PhantomJS对ES6支持不佳且已过时,建议转向Chrome Headless。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

使用无头浏览器phantomjs时屡次出现console++.js:263报错

查看了id亦或是class,甚至换了name都还是出这个问题

查找不到元素后继的程序自然出现问题无法执行报错。

解决办法

程序执行速度很快,网站一般使用JS渲染数据,此时就需要让咱们的抓取代码稍等一会才能看到控件。

解决办法很简单

Thread.sleep(3000);

让程序休眠一下等待控件加载出来

看了一个大佬的做法,更能彻底解决问题

int retry = 20;//失败的话,最多循环多少次
int i = 1;//计数用,第一次,所以1开头
bool again = false;//配合计数,是否继续循环
do
{
    try
    {
        again = false;
        //配合计数,需要预估下正常情况多少秒之内可以成功。
        //这个500毫秒乘以总次数要求大于预计成功的时间
        Thread.Sleep(500);
        driver1.FindElementById("ID").SendKeys("123");//这里容易报错
    }
    catch (Exception)
    {
        again = true;
        i++;
        if (i >= retry)
            again = false;
        //截图看下错误样子
        driver1.GetScreenshot().SaveAsFile(string.Format(path, DateTime.Now.ToString("yyyyMMdd HHmmssfff.A")), ScreenshotImageFormat.Png);
    }
}while(again);

套用一个循环,失败就重试,反复等待不报错。

其实个人觉得只要等待时间设置几秒一般不会出现找不到控件这个错误

怎么改全凭个人喜好咯!

最后说一下,phantomjs已然老了

  1. phantomjs注定会被chrome headless吃掉,不建议继续使用
  2. phantomjs在对ES6的支持上天生有坑,前端使用ES6的网站都不建议用phantomjs去跑。

溜了,写代码去了,记得点赞啊! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Beyond

打赏个666吧

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

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

打赏作者

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

抵扣说明:

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

余额充值