DOM清洗
动态页面¶
- 可能渲染比较慢,导致文本未出现,应该等2次
- 这个未渲染可能会与仅仅只是未出现在snapshot里冲突,像“其他登录选项”(icon)
- 解决方法:应该等2次,2次都等1.5s
索引与太动态的元素变化¶
- 动态元素索引变化比较频繁,会导致索引一会1一会10的
- 但是这种情况相对比较少,一般情况下,这都是动画元素,不会出现在snapshot里。
存在清洗过头---如icon代替文本语义¶
- icon代替文本语义
- playwright-cli、agent-browser、browser-use都不太行,尽管browser-use还保留了一些html标签,但是没有文本,AI不会自动去判断此处是否有可能是登录方法,而是直接放弃判断
- 因此相比browser-usetoken用得更多,agent-browser完全不保留 id,可能playwright-cli才是最好的选择
- 解决方法
- 保留id
- i、svg保留class
- image(title、alt基本都会保留的),大都不需要,最多就是保留url最后一段
- span等其他
- 按类名匹配过滤
- 给AI这样的示例,提示要其父节点的html
- 比如
要注意icon语义化(通常都是类名中包含icon信息,即语义化信息),如果有很多同级元素如i、span、图片,然后前面一点或者后面一点有提到某些东西如其他登录选项,那么这些元素大概率就是这些item,此时可以尝试获取父级html,分析html
- 比如
- 保留常见icon的类名
- playwright-cli、agent-browser、browser-use都不太行,尽管browser-use还保留了一些html标签,但是没有文本,AI不会自动去判断此处是否有可能是登录方法,而是直接放弃判断
测试提示词¶
- 不同browsercli
- 用browser-use完成 https://www.csdn.net/ 的登录,等你了解到登录需要输入什么再和我要这些,账号密码 > 邮箱验证码 > 手机验证码,你应该先激活虚拟环境,然后就可以执行browser-use命令了。
- 用playwright-cli完成 https://www.csdn.net/ 的登录,等你了解到登录需要输入什么再和我要这些,账号密码 > 邮箱验证码 > 手机验证码。
- 用agent-browser完成 https://www.csdn.net/ 的登录,等你了解到登录需要输入什么再和我要这些,账号密码 > 邮箱验证码 > 手机验证码。
- 要注意icon语义化(通常都是类名中包含icon信息,即语义化信息)。如果有很多同级元素如i、span、图片,然后前面一点或者后面一点有提到“某些东西”如“其他登录选项”(通常只是文本提示,不可交互),那么这些元素大概率就是这些item,此时可以尝试获取父级html,分析html(非文本匹配,而是className、id匹配)。即便没有很多相同元素,如果提到“某些东西”且在其附近文本中没有对应信息,则应该尝试分析父级html来找到这些元素,而不是说找某些元素去点击,比如“其他登录选项”(这很明显不是在文本后面,就是文本前面,通常都是在后面)。
- 结果
- 都可以发现图标登录选项
- agent-browser不行
- TODO:强调“其他登录选项”只是提示,不可交互,寻找周围元素的id、className
- 效率待分析
- 都可以发现图标登录选项
playwright-cli¶
- 基本上就保留了AccessibilityTree,基本上都是整个页面
- 某些情况下还会保留元素id
1. span icon(csdnlogin)¶
- https://www.csdn.net/ , 点击登录后
- 登录方式是icon而不是文本:
<span data-v-7e28454b="" class="login-third-item login-third-qq"></span> - ”其他登录方式“和“微信登录”、“验证码登录”等同时出现
- “微信登录”、“验证码登录”等可能会被认为就是“其他登录方式",因为“其他登录方式"可能是以css的方式显示在上方
- generic [ref=e60]:
- text: 终于等到你~
- img [ref=e61]
- generic [ref=e62]:
- generic [ref=e63]:
- generic [ref=e64]: 登录可享更多权益
- generic [ref=e65]: 将博客内容转为可运行代码 提升学习效率
- generic [ref=e66]:
- generic [ref=e68]:
- generic [ref=e69] [cursor=pointer]: 微信登录
- generic [ref=e70] [cursor=pointer]: 验证码登录
- generic [ref=e71] [cursor=pointer]: APP登录
- generic [ref=e73]:
- generic [ref=e74]:
- img
- generic [ref=e75]: 打开微信扫一扫,快速登录/注册
- paragraph [ref=e78]: 其他登录方式
<div data-v-92f0ae06="" class="login-box-bottom">
<div data-v-7e28454b="" data-v-92f0ae06="" class="login-third">
<p data-v-7e28454b="">其他登录方式</p>
<div data-v-7e28454b="" id="thirdLogin" class="login-third-items">
<span data-v-7e28454b="" id="last-login2" class="last-login-way" style="display: none;">上次登录</span>
<span data-v-7e28454b="" class="login-third-item login-third-passwd login-third-first-item"></span>
<!---->
<span data-v-7e28454b="" class="login-third-item login-third-qq"></span>
<span data-v-7e28454b="" class="login-third-item login-third-weibo"></span> <span data-v-7e28454b="" class="login-third-item login-third-baidu"></span> <span data-v-7e28454b="" class="login-third-item login-third-github"></span> <span data-v-7e28454b="" class="login-third-item login-third-huawei"></span> <span data-v-7e28454b="" class="login-third-item login-third-hbuilder"></span>
<span data-v-7e28454b="" class="login-third-item login-third-google"></span> <span data-v-7e28454b="" id="tip_box" class="medal-hover-tips">关联账号领取专属勋章</span>
</div>
</div> <!----></div>
2. svg/img icon(juejinlogin)¶
- https://juejin.cn/ , 点击登录后
- 这一个倒是因为img没有清洗掉(注意这个img只是图片的意思,不是img标签)
- generic [ref=e839]:
- generic [ref=e840]:
- generic [ref=e841]: 其它登录:
- generic [ref=e842]:
- img [ref=e844]
- img "微信" [ref=e852] [cursor=pointer]
- img "icon_GitHub" [ref=e854]
- generic [ref=e860] [cursor=pointer]: 密码登录
<div data-v-79737cbc="" class="other-login-box">
<div data-v-79737cbc="" class="oauth-box">
<span data-v-79737cbc="">其它登录:</span>
<div data-v-79737cbc="" class="oauth">
<div data-v-79737cbc="" class="oauth-bg">
<svg data-v-79737cbc="" width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg" class="weibo-icon">...</svg>
</div>
<div data-v-79737cbc="" class="oauth-bg">
<img data-v-79737cbc="" title="微信" alt="微信" src="//lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/e0ff12435b30910520c9a3aac9b90487.svg" class="oauth-btn"></div>
<div data-v-79737cbc="" class="oauth-bg">
<svg data-v-79737cbc="" width="46px" height="46px" viewBox="0 0 46 46" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="github-icon">...</svg></div>
</div>
</div>
<span data-v-79737cbc="" class="clickable">
密码登录
</span> <!----></div>
agent-browser¶
-
基本上就保留了AccessibilityTree,基本上都是整个页面
-
csdnlogin
- generic - generic - Iframe [ref=e2] - generic - generic - StaticText "终于等到你~ " - image - generic - generic - StaticText "登录可享更多权益" - StaticText "将博客内容转为可运行代码" - StaticText " " - StaticText "提升学习效率" - generic - StaticText "微信登录" - StaticText "验证码登录" - StaticText "APP登录" - generic - image - image - StaticText "打开微信扫一扫,快速登录/注册" - paragraph - StaticText "其他登录方式" - generic - image -
juejinlogin
browser-use¶
-
其清洗的内容相对少,因此清洗后内容比较多,且如果页面太多,需要滑动才能获取页面的更多内容
- 保留了比较完整的HTML
-
csdnlogin
-
juejinlogin