Selenium web 端 ui 自动化的疑问

大瓶子 · 2022年08月11日 · 最后由 北树冥冥 回复于 2022年08月23日 · 7942 次阅读

1、文件上传的 ui 自动化不能无浏览器界面运行吧
2、控件拖拽的 ui 自动化怎么做,也不能无浏览器界面运行吧,使用 pyautogui 模拟鼠标实现吗?或者 python 之 ActionChains 方法

共收到 9 条回复 时间 点赞

我擦,和我的问题一样,我也有这疑问,怎么解决呢?不解决,都没办法定时任务了,那自动化意义都没了

是真的测试过不支持么?

我理解浏览器的无头模式,实际还是有运行界面渲染引擎的,只是渲染出来的最终 UI 并没有展示,节省图形资源占用而已。我理解应该普通浏览器怎么写,无头浏览器也是一样的写法。

陈恒捷 回复

有非 input 的上传文件,需要用到模拟鼠标这种方法,正常出现浏览器能成功,只要是无头或者 Jenkins 执行,就不行,很无语

王一一 回复

不知道你的 Jenkins 上执行不通过是什么表现。Jenkins 上关键也是看执行的 slave 上面是什么环境(selenium 版本,webdriver 版本等,基本上出现特殊的问题都和特定的版本有关)和你本地能执行通过的环境有什么区别。甚至说你本机也可以挂载到 Jenkins 上作为一个 slave 来做执行机。 所以你想:如果本地可以,为什么 Jenkins 上不行呢?原因大概率是环境和版本的差异。
建议你先别纠结无头模式,先把 Jenkins 上报错的原因找到和解决。

如果是想绕过这些步骤,倒是有个建议:
1、上传:可以通过 js 操作元素/利用 requests+ 当前 driver 的 cookie 发送上传请求
2、拖拽:这个通过 js 实现元素的 dom 操作

JoyMao 回复

1、这样就失去了从界面上测试上传动作的意义了 实际只测试了后端
2、拖拽用 js 实现我在不同场景下尝试过几次 有些场景可以 有些场景不行

7楼 已删除
fiskeryang 回复

既然要从界面上操作,那还是不要用无头模式。
至于 jenkin 去运行不能打开浏览器页面,可能的原因是 jenkin 以后台服务的方式去启动的
我都是用命令去启动 jenkins 的
但是可以试试 google 到的一个回答(我没试过)

JoyMao 回复

我试了,也没效果😂

这是无头模式难以避免的问题,按照我现今的做法,只能绕开。
就看关注的是哪一个局面的问题,如果是整个表单数据的交互,则更多关注整个数据的完整性,绕开,如果是校验资源管理器,只能手动回归下了(量应该不多)
针对 1 问题,我的做法是把(隐藏)input 标签属性打开,则可以直接 send_keys
针对 2 问题,一般来说,看设计,有些拖拽,是必须要求鼠键不松开,有些可以选中之后,再确定目标 location 则可以,否则的话,像楼上说的 js 操作了。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册