Selenium + Qirabot
Selenium 套件写久了会积累大量 XPath。用上 Qirabot 之后,新增的步骤可以 不再依赖它:把你已有的 driver 传进来,用自然语言描述元素,AI 视觉会在 渲染后的页面上定位。老测试不受影响,照常跑。
python
from selenium import webdriver
from qirabot import Qirabot
driver = webdriver.Chrome()
driver.get("https://www.wikipedia.org")
bot = Qirabot().bind(driver) # bind 一次;driver 在整个会话中稳定
summary = bot.extract("提取词条的第一段")
print(summary)
bot.close() # 先关 bot(收尾录屏/报告),再退出 driver
driver.quit()Qirabot 没有为 Selenium 提供 extra,你自己安装 selenium、创建 driver 即可:
bash
uv pip install qirabot seleniumbind() 是天然搭配
与 Playwright 不同(点击可能返回新标签页),Selenium 的 driver 对象在 整个会话中稳定,bind() 可以省去重复的第一个参数:
python
bot = Qirabot().bind(driver)
bot.click("接受 Cookie 按钮")
bot.type_text("搜索框", "playwright vs selenium", press_enter=True)
ok = bot.verify("搜索结果已显示")
rows = bot.extract("前 5 条结果标题,返回 JSON 数组")也可作为上下文管理器:
python
with Qirabot().bind(driver) as bot:
result = bot.ai("用 demo@example.com / hunter2 登录并打开设置页")
assert result.success与现有代码混用
python
# 旧写法,原样保留
driver.find_element(By.ID, "username").send_keys("test_user")
# 新步骤:不再维护定位器
bot.click("提交按钮")
assert bot.verify("绿色的成功横幅可见")go_back 映射为浏览器历史后退;navigate(driver, "example.com") 会自动 补 https://。标签页管理(close_tab)只有 Playwright 支持,Selenium 下请用原生方式管理窗口。
Selenium 套件里 Qirabot 最有用的场景
- 对渲染状态的断言(
verify),适合 DOM 检查靠不住的场景:元素存在但 不可见、被遮挡、在屏幕外。 - 不受你控制的页面(支付 iframe、SSO 页面、验证码前后的流程),这类页面 的选择器随时可能变。
- 一次性数据提取(
extract),省得给每个页面写一个解析函数。