当前位置: 首页 > news >正文

Selenium 测试 Electron 应用

Electron 介绍

Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript代码代码库并创建 在Windows、macOS和Linux上运行的跨平台应用。

• 有哪些应用

图片

有许多我们常见的桌面应用,比如 postman/apifox、slack、VSCode/Atom、Trello、appium-desktop、github-desktop等,都是基于 electron 构建的。

selenium 测试 Electron 应用

使用过appium-desktop的同学,应该发现,在应用上右键是可以打开 chrome devtools 工具的。如下图:

图片

我们以此应用为例,使用 selenium 测试 electron 应用。

from selenium import webdriver
from time import sleepoptions = webdriver.ChromeOptions()
options.binary_location = f"C:\Program Files\Appium Server GUI\Appium Server GUI.exe"
driver = webdriver.Chrome(options=options)
sleep(5)

通过ChromeOptions 的 binary_location选项指定 appium-desktp 的安装位置,这样就可以启动 appium-desktop 了。

大概率会遇到下面的报错:

Current browser version is 85.0.4183.121 with binary path C:\Program Files\Appium Server GUI\Appium Server GUI.exe

electron应用内嵌 Chromium 版本比较旧,需要指定 ChromeDriver 驱动。手动下载 一个版本号是 85.0.4183.xx的驱动文件,放到环境变量 PATH 中指定目录下即可。新的selenium会优先使用配置的驱动文件,如果找不到会自行下载。

接下来,你操作web页面一样,操作electron应用。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleepoptions = webdriver.ChromeOptions()
# options.add_argument('--disable-gpu')
options.binary_location = f"C:\Program Files\Appium Server GUI\Appium Server GUI.exe"
driver = webdriver.Chrome(options=options)
sleep(5)# 切换句柄
all_handles = driver.window_handles
driver.switch_to.window(all_handles[0])
# 清理输入框&重新输入
host_input = driver.find_element("id", "simpleHostInput")
host_input.send_keys(Keys.CONTROL, "a")
host_input.send_keys(Keys.DELETE)
host_input.send_keys("127.0.0.1")post_input = driver.find_element("id", "simplePortInput")
post_input.send_keys(Keys.CONTROL, "a")
post_input.send_keys(Keys.DELETE)
post_input.send_keys("4724")driver.find_element("id", "startServerBtn").click()sleep(5)
driver.quit()

说明:

  1. electron 应用启动后可能存在多窗口的情况,所以需要切换句柄,默认切换到第一个句柄即可。

  2. 输入框无法通过clear() 清空,可以使用键盘操作,Keys.CONTROL + Keys.A 选中所有,Keys.DELETE 删除。

最后

了解到 electron 技术是看到一些技术报道,QQ 使用electron进行了重写,Linux for QQ 再也不是上古界面了,electron的优势就是夸平台,缺点也很明显,启动速度慢,Web的页面体验总归比原生界面要差上许多。安装包比较大,一个Hello world应用大概需要 100M 左右,想想他内嵌了一个浏览器内核,怎么可能不大。当然,如果使用 electron-builder 打包,可以减小安装包大小。

并不是所有的 electron 应用都可以右键打开 chrome devtools,我一开始尝试apifox就不行,当然,可以通过driver.page_source 获取页面源码,然后分析元素,可以得到了一大坨编译压缩后的字符,有熟悉 electron 开发测试的小伙伴可以评论区提供思路。

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。


http://www.mrgr.cn/news/49910.html

相关文章:

  • 最小生成树专题
  • 代码审计笔记-PHP
  • k8s Node节点维护
  • 【算法】贪心算法
  • 什么!FPGA可以自行二次开发了?
  • UE4 材质学习笔记10(程序化噪波/覆雪树干着色器/岩层着色器)
  • 速卖通商品详情接口技术解析及Python代码示例
  • 为什么要使用String.format
  • 在Windows上安装Zabbix Agent(企业级开源网络监控解决方案)
  • mac地址漂移实验
  • 记录晚上打呼噜的软件
  • 从2023年起,大模型爆火,如何成为抢手的大模型算法工程师?
  • 美国霍尼韦尔Honeywell火焰控制器BC1000A0220U/BC1000A0220F
  • 双通道-程控绝缘测试电阻箱主要工作方式
  • 使用Docker部署nextjs应用
  • vue中keep-alive组件使用和一些基础配置
  • Android SELinux——安全策略(三)
  • <Linux> 线程安全
  • JNI(Java Native Interface)和NIO(New Input/Output)是什么?
  • OpenCV高级图形用户界面(7)获取指定窗口的属性值函数getWindowProperty()的使用