1. 自动化测试工具 Rod

    • Rod 是一个基于 Go 语言的浏览器自动化测试工具,支持无头模式和有头模式。
    • 它提供了丰富的 API 来操作网页元素,例如输入文本、点击按钮、等待页面加载等。
  2. LeetCode 登录自动化

    • 该项目通过 Rod 实现了对 LeetCode 登录页面的自动化操作,包括输入用户名和密码、提交表单以及判断登录结果。
  3. 页面元素定位

    • 使用 CSS 选择器(如 #id_login#id_password)定位输入框。
    • 使用 Race() 方法同时监听多个页面元素,确保在登录成功或失败时能够正确处理。
  4. 错误处理

    • 如果登录失败,程序会抛出异常并打印错误信息。
  5. 并发处理

    • Race() 方法允许同时监听多个页面元素,提高代码的灵活性和响应速度。
      6.是否匹配

MustMatches()

  • 作用:验证元素是否匹配指定选择器
  • 返回:布尔值(隐式断言)
  • 失败处理:不匹配时触发 panic
  • 典型用法: if elm.MustMatches("[data-cy=error]") { ... }

  • MustDo()
  • 作用:链式调用终点方法,强制完成所有前置操作
  • 特点:

    • 自动等待元素存在
    • 执行失败会触发 panic
    • 适用于快速原型开发
  • 示例场景: page.Race().Element(".selector").MustDo()
package main

import (
    "fmt" // 导入 fmt 包,用于打印输出

    "github.com/go-rod/rod"        // 导入 Rod 包,用于浏览器自动化
    "github.com/go-rod/rod/lib/input" // 导入 input 包,用于模拟键盘输入
)

func main() {
    const username = "" // 定义用户名常量,需替换为实际用户名
    const password = "" // 定义密码常量,需替换为实际密码

    browser := rod.New().MustConnect() // 创建一个新的浏览器实例并连接到远程浏览器

    page := browser.MustPage("https://leetcode.com/accounts/login/") // 打开 LeetCode 登录页面

    page.MustElement("#id_login").MustInput(username) // 定位用户名输入框并输入用户名
    page.MustElement("#id_password").MustInput(password).MustType(input.Enter) // 定位密码输入框并输入密码,然后按下回车键提交表单

    // It will keep retrying until one selector has found a match
    elm := page.Race().Element(".nav-user-icon-base").MustHandle(func(e *rod.Element) { // 监听登录成功的页面元素
        // print the username after successful login
        fmt.Println(*e.MustAttribute("title")) // 打印登录成功的用户名
    }).Element("[data-cy=sign-in-error]").MustDo() // 监听登录失败的页面元素

    if elm.MustMatches("[data-cy=sign-in-error]") { // 判断是否为登录失败的页面元素
        // when wrong username or password
        panic(elm.MustText()) // 抛出异常并打印错误信息
    }
}
每日更新-免费小火箭账号
不要错过任何机会,探索最新的应用和游戏,就在我们的平台。
立即访问
最后修改:2025 年 04 月 29 日
如果觉得我的文章对你有用,请随意赞赏