gaozhao1989 / pyjab

Python implementation for Java application UI automation with Java Access Bridge
GNU General Public License v2.0
49 stars 20 forks source link

测试中碰到的问题 #21

Closed xinchenll closed 2 years ago

xinchenll commented 2 years ago

最近我一有空便学习这个模块,遇到了些问题,不知能否解决:

  1. 在使用click(),send_text()时, 如果加上 simulate=True 这个参数,发现被控制的JAVA窗体会弹到前台来,这对我来说非常不友好, 因为我希望在整个使用过程中始终都会保持在后台, 后来我去掉这个参数, 发现是不会弹到前台来了, 但是我看到你的文档建议是加上这个参数, 是不是没有这个参数, 整个程序运行过程会不可靠呢?

  2. 如果当前有两个窗体 jabdriver_main jabdriver_sub 对子窗体进行截图 jabdriver_sub.get_screenshot_as_file("./screenshot.png") 发现截出来的图片大小和位置是子窗体的,但是截的图是主窗体内容, 这样的话这个截图功能就没有意义了,不知能否改进, 并且截图时被控制的JAVA窗体也会弹到前台了, 我希望不要这样, 一定要保持在后台操作,这对我非常重要.

  3. 如何实现对element 的鼠标双击

  4. 初使化jabdriver时可以选择hwnd和title, 可不可以多加一个classname, 这是我在pinwinauto上看到的, 因为我这title 是动态的,不好控制,而且还有中文的, 是不是中文的title 对用jab来说会增加不稳定的因素呢? 不过这个可能换成hwnd, 倒不是很重要

目前想到的也就这么多.....谢谢.

gaozhao1989 commented 2 years ago

Hi @xinchenll,

首先感谢您的热心反馈。 以下为您提出的问题解答:

  1. 针对大多数“动作”函数所携带的参数 "simulate" 而言,默认值保持是为 False 的状态,即默认会调用 JAB 内部的函数进行处理,当您的程序使用此状态的“动作”行为时,程序将可保持在“后台”运行。该参数的实现是为了方便某些不太遵守 Java UI 开发规范的程序执行“动作”操作的,如果您确定您的程序可在后台无障碍运行,则建议保持参数 “simulate” 为 False
  2. 目前的截屏逻辑是基于第三方库 Pillow 完成的,所以窗体的显示以及坐标信息是必不可少的,这就导致了截图前一定会将窗体推到最前然后执行截图操作,可以说明的是这的确是需要改进的地方。对于您提到的需要截取对应窗体的图片,目前建议直接截取对应窗体的根元素即可。
  3. 使用两次 "click" 函数即可。
  4. 我无法从 JAB 的技术文档中找到 classname 的相关信息,请问您指的是什么?
gaozhao1989 commented 2 years ago

Add screenshot enhancement to milestone