C++与Selenium WebDriver:从安装到第一个测试用例

1. 环境准备

所需组件:

  • C++编译器(如GCC或MSVC)
  • Selenium WebDriver(浏览器驱动)
  • Selenium C++客户端库

安装步骤:

  1. 安装浏览器驱动(以Chrome为例):

    • 下载与浏览器版本匹配的ChromeDriver
    • 解压后将chromedriver放入系统PATH路径
  2. 安装C++客户端库

    • 使用vcpkg包管理器:
      vcpkg install selenium-cpp
      

    • 或手动编译:selenium-cpp源码
2. 创建测试项目

CMake配置示例:

cmake_minimum_required(VERSION 3.10)
project(selenium_test)

find_package(selenium-cpp REQUIRED)
add_executable(test_case main.cpp)
target_link_libraries(test_case PRIVATE selenium-cpp)

3. 第一个测试用例
#include <selenium/webdriver.h>
#include <selenium/chrome.h>

using namespace selenium;

int main() {
    // 1. 创建Chrome驱动
    ChromeDriver driver;
    
    // 2. 打开百度首页
    driver.get("https://www.baidu.com");
    
    // 3. 定位搜索框并输入关键词
    WebElement search_box = driver.find_element(By::name("wd"));
    search_box.send_keys("Selenium C++");
    
    // 4. 提交搜索
    search_box.submit();
    
    // 5. 等待结果加载(显式等待)
    driver.wait(Until::title_contains("Selenium C++"), 5000);
    
    // 6. 验证结果
    if(driver.get_title().find("Selenium C++") != std::string::npos) {
        std::cout << "测试通过!" << std::endl;
    }
    
    // 7. 关闭浏览器
    driver.quit();
    return 0;
}

4. 关键组件说明
  1. WebDriver:浏览器控制器接口
  2. By定位器
    • By::id("element_id")
    • By::css_selector(".class")
    • By::xpath("//div")
  3. 等待机制
    driver.wait(Until::element_visible(By::id("result")), 3000);
    

5. 常见问题解决
问题现象 解决方案
驱动未找到 检查PATH是否包含驱动路径
浏览器版本不匹配 更新浏览器或下载对应版本驱动
元素定位失败 使用开发者工具验证定位表达式
6. 进阶技巧
  • 多浏览器支持
    FirefoxDriver ff_driver;
    EdgeDriver edge_driver;
    

  • 页面对象模式
    class SearchPage {
    public:
        WebElement search_box;
        SearchPage(WebDriver& drv) : 
            search_box(drv.find_element(By::name("wd"))) {}
    };
    

执行流程
编译运行后,将自动打开浏览器 → 执行搜索操作 → 验证结果 → 输出测试报告

此方案适用于Windows/Linux/macOS平台,可根据实际需求调整定位策略和等待条件。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐