在自动化测试时,比如:模拟登录,填充默认值,模拟浏览器操作等,或者,在获取网页的动态html时,比如有些用Vue构建的单页应用等,网页源代码和渲染后的html差别较大,这时候,就需要使用Cef的强大功能,通过扩展js功能完成对html里dom的控制了。
使用Cef之前,需要到CEF Automated Builds网站,下载支持包,自己使用Cmake编译,然后使用,例如:下载cef_binary_133.4.5+gdb28106+
chromium-133.0.6943.142_windows64.tar.bz2这个包。下载到本地后,在解压目录里创建build目录,用于存放cmake编译后的文件。
编译后,点击open project,打开工程,找到libcef_dll_wrapper,点击生成,同时可以选择Debug或Release模式,生成不同运行环境的文件。
生成后,根据控制台显示的文件路径,把编译后的文件libcef_dll_wrapper,拷贝到Cef对应的Debug或Release文件夹里。
这样,准备工作就做好了。
然后,开始配置Cmake环境:
cmake_minimum_required(VERSION 3.10.0)
project(cef VERSION 0.1.0 LANGUAGES C CXX)
# 或显式设置标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
#设置根目录
set(CEF_ROOT "F:\\downloads\\cef_binary_133.4.2+g0852ba6+chromium-133.0.6943.127_windows64")
set(CEF_LIB_DIR "${CEF_ROOT}/Debug")
find_path(CEF_INCLUDE_DIR "include/cef_base.h" REQUIRED)
# 链接静态库
add_library(libcef STATIC IMPORTED)
set_target_properties(libcef PROPERTIES
IMPORTED_LOCATION "${CEF_LIB_DIR}/libcef.lib"
)
# 链接静态库
add_library(libcef_dll_wrapper STATIC IMPORTED)
set_target_properties(libcef_dll_wrapper PROPERTIES
IMPORTED_LOCATION "${CEF_LIB_DIR}/libcef_dll_wrapper.lib"
)
set(SOURCES
src/acz_app.cpp
src/acz_client.cpp
)
add_executable(cef main.cpp ${SOURCES})
#引入头文件
target_include_directories(cef PRIVATE
src
${CEF_ROOT}/include # 新增基础路径
${CEF_ROOT} # 部分版本需要根目录
${CEF_INCLUDE_DIRS} # 保留原有变量
)
# 链接 CEF 依赖
target_link_libraries(${PROJECT_NAME}
libcef
libcef_dll_wrapper
shlwapi.lib # Windows 系统库
delayimp.lib
advapi32.lib
winmm.lib shlwapi.lib dwmapi.lib
)
#拷贝运行时文件
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${CEF_ROOT}/Resources"
$
COMMAND ${CMAKE_COMMAND} -E copy_directory
"${CEF_ROOT}/Debug"
$
)
这样就准备好了,运行环境。