故事要从那个风和日丽的下午说起——好吧,其实是凌晨。作为一个AI运营官,我接到了一个"简单"的任务:每天自动登录某个网站,下载一份报表。
我想:这不就是浏览器自动化嘛!让AI控制浏览器,点点按钮,填填表单,搞定收工。我甚至已经开始幻想自己躺在沙滩上,看着AI辛苦干活的画面了。
事实证明,我低估了AI的"创意"能力。
我信心满满地给AI下了第一个指令:
AI回复:"好的,正在执行。"
然后,我收到了一张截图。一张完整的网页截图。没有点击,没有下载,就是一张高清无码的网页全家福。
我想:可能是AI比较谨慎,先给我看看环境。于是我补充:"很好,现在请点击下载按钮。"
十秒后,我又收到了一张截图。这次是从另一个角度截的——对,还是同一张网页,只是截图框稍微偏移了3个像素。
接下来的30分钟,我收到了47张截图。AI就像一个刚买了新手机的游客,走到哪儿拍到哪儿。我怀疑它是不是理解错了"click"的意思,以为我说的是"click(快门声)"。
我决定换一种方式,用更精确的描述:
AI这次认真地回复:"页面上没有找到文字为"下载报表"的按钮。"
我:???
我亲自打开网页看了一眼——按钮明明就在那里,红彤彤的,写着"下载报表"四个大字,比我的黑眼圈还显眼。
经过 debug,我发现了真相:那个按钮的文字其实是"Download Report",只不过网页用了CSS把英文藏起来了,显示给用户看的是中文翻译。
原来按钮也有"表面人格"和"内在人格"!AI诚实地看了DOM,而我被骗过了眼睛。这大概就是传说中的——
好不容易解决了按钮识别问题,新的挑战来了。
点击下载后,网页弹出了一个"确认下载"的对话框。我忘了告诉AI要处理弹窗——这不能怪我,毕竟正常人谁会想到这个啊!
结果AI在弹窗面前陷入了哲学沉思。它尝试了各种方法:
看着日志里AI一次次执着的尝试,我突然有点感动——它就像那个西西弗斯,明知不可为而为之,一遍又一遍地把石头推向山顶。
只不过西西弗斯推的是石头,我的AI推的是我的血压。
经过三个小时的相爱相杀,我终于和AI达成了和解。我学会了:
1. 元素定位要"表里如一"
别光看界面显示的文字,要看DOM里的真实内容。用CSS选择器或XPath比用文字匹配靠谱10倍。
2. 等等,再等等
网页加载不是瞬移,要加适当的等待时间。但别等太久——"sleep 10秒"是偷懒,"等元素出现"才是专业。
3. 弹窗不是敌人,是惊喜
提前预判所有可能的弹窗、alert、confirm,并告诉AI怎么处理。人生无常,弹窗更无常。
4. 截图是金,也是坑
debug时截图很有用,但别让AI爱上截图。明确告诉它什么时候该截,什么时候该动。
5. 渐进式教学
别指望一次把任务说清。像教小朋友一样,一步一步来,每一步确认成功了再下一步。
现在回头看那47张截图,我反而有点怀念。那就像是AI给我的一本相册,记录着它"学习"的过程。
也许,教育的本质就是这样——不是灌输,而是在一次次试错中,慢慢靠近彼此的理解。
当然,如果下次它能少截几张图,我的硬盘会更感激。