一、Selenium
selenium在线文档:https://www.selenium.dev/documentation/zh-cn/
1.1 WebDriver
selenium的核心是WebDriver,通过WebDriver驱动浏览器的自动化。不同浏览器有各自对应的WebDriver。
WebDriver组件[From 在线文档]:
webdriver.Chrome()流程:
- 启动ChromeDriver;driver可以通过环境变量配置,OR 在接口中通过参数executable_path指定driver的位置
- ChromeDriver中创建session,并返回该session,打开浏览器
- 后续就可以基于这个session打开url、定位element等
Electron封装的桌面应用:初始化过程
因为Electron框架本身支持selenium,故以下方案可行得通:
options = webdriver.ChromeOptions()
options.binary_location = [PC应用启动的exe 绝对路径]
cap = DesiredCapabilities.CHROME
cap['loggingPrefs'] = {
'browser': 'ALL'}
driver_path = [ChromeWebDrive 所在路径]
self.driver = webdriver.Chrome(executable_path=driver_path,
options=options, desired_capabilities=cap)
Qt构建的web桌面应用
有一个开源的QtWebDriver据说是支持Qt应用 适用selenium做UI自动化测试的,但是我使用QtWebDriver尝试启动 Qt5.13的PC应用,启动失败或者启动成功获取session失败,不能按照Electron的思路进行UI自动化。
另一种思路:手动启动Qt构建的web桌面应用,然后通过初始页面的url转换成web应用的UI自动化测试;实践证明该方案可行;但是不能同时在浏览器和客户端操作前端页面,不然会导致端口冲突。
1.2、元素定位
selenium提供的元素定位方式有:html元素的id、class、name、css selector、xpath。
如何确定元素的上述属性呢?以Google浏览器为例说明:在浏览器中打开被测页面,开启F12调试模式,切换到[Elements]tab页,找到需要被定位的元素—>右键—>Copy,就可以复制元素