Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rpa-server部分代码缺失 #2

Closed
ddkftc opened this issue May 20, 2023 · 6 comments
Closed

rpa-server部分代码缺失 #2

ddkftc opened this issue May 20, 2023 · 6 comments
Assignees
Labels
documentation Improvements or additions to documentation

Comments

@ddkftc
Copy link

ddkftc commented May 20, 2023

很不错的项目,花了点时间研究了下,成功跑起来了,遇到了一些问题想要交流下:

  • rpa-server端导入后编译报错,IDE提示缺少几个类,io.leego.rpa.entity.QAppio.leego.rpa.entity.QTask io.leego.rpa.entity.QUser等等,看了下依赖,应该是query-dsl自动生成的类,但本人之前没接触过,花了挺久时间总算把几个缺失的类生成了,可以成功编译并运行,大佬有时间的话可以考虑把缺的类上传一下

  • task表的data字段data varchar(4096) null,是不是改为text类型更合适?因为在client端看到有对长度超过4000的文本的处理,但表结构实际上存储不了那么多文本

  • client端,试了下企业微信端的,自己重新截图小改了一下可以跑起来,但在软件最小化后会有问题。看了下代码,connect方法会调用device.set_foreground(),最终会调用win32gui的SetForegroundWindow(self.handle)方法,但实际没生效,应该是需要在调用前发送一条系统消息才生效,我在前面加了一行调用SendMessage方法,实测这样没问题了

  • client端的touch方法以及一些操作键盘的方法,调用一下就需要至少500ms,不知道是有sleep语句还是实际操作调用的底层api确实需要这么久,这种是否有可以优化的空间

@yihleego
Copy link
Owner

你好呀 @ddkftc,
我来解释一下你遇到的一些问题:

  1. rpa-server 使用了 QueryDSL 作为 Spring Data JPA 查询 Builder 工具, 其原理是根据定义的 Entity 自动生成查询工具类,例如:User.java -> QUser.java。可以直接通过 Maven 编译,随后就可在target目录下找到它们,也会被直接打包进 JAR 包中,所以不需要将它们放到项目代码中。如果您使用的是 IntelliJ IDEA 作为开发工具,可以这样操作:
    image

  2. 可以根据您自己的具体情况定义表结构,当前项目是一个简单的样例,无法直接用于生产环境。

  3. rpa-client 需要保证客户端在前台运行,即无法最小化窗口或隐藏创建执行任务,所以如果您需要防止窗口不小心最小化导致任务失败,可以在所有任务前调用一次SendMessage方法。

  4. rpa-client 是基于 Airtest 实现的机器人流程自动化, Airtest 封装了图像识别(OpenCV)、Windows API 等,它会根据传入的图片,去搜索和对比窗口中对应的位置,所以需要花费一些时间,如果需要加快识别速度可以参阅 Airtest 的文档,调整识别算法,识别精度等参数。

如果还有其他问题可以留言或邮箱联系,欢迎提交 PR,感谢。

@yihleego yihleego self-assigned this May 20, 2023
@yihleego yihleego added the documentation Improvements or additions to documentation label May 20, 2023
@ddkftc
Copy link
Author

ddkftc commented May 21, 2023

@yihleego 非常感谢您的答疑

关于第一点,是因为我导入项目之后看到IDEA提示缺少类,并且JAVA_HOME设置的是Java8等各种原因,运行mvn package提示编译错误。然后为了"解决"这个问题,我在pom.xml引入了apt-maven-plugin插件生成缺失的类
plugin
把生成的类拷贝到源码目录下,此时没有错误提示并且可以正常运行了,但mvn package打包会报错。

刚刚测试了一下,JAVA_HOME设置为Java17的路径就不会有上述问题,项目导入后可以直接编译运行,并能够正常打包。

是我画蛇添足了,项目导入后直接点运行就会自动生成那几个缺失的类,不需要自己引入额外的插件生成,前提是JAVA_HOME的值Java版本跟这个项目的相匹配

@ddkftc
Copy link
Author

ddkftc commented May 21, 2023

另外还想请教一下,rpa-client里面airtest文件夹下代码与原版Airtest相比,是否有做过什么修改或者优化?

@yihleego
Copy link
Owner

@yihleego 非常感谢您的答疑

关于第一点,是因为我导入项目之后看到IDEA提示缺少类,并且JAVA_HOME设置的是Java8等各种原因,运行mvn package提示编译错误。然后为了"解决"这个问题,我在pom.xml引入了apt-maven-plugin插件生成缺失的类 plugin 把生成的类拷贝到源码目录下,此时没有错误提示并且可以正常运行了,但mvn package打包会报错。

刚刚测试了一下,JAVA_HOME设置为Java17的路径就不会有上述问题,项目导入后可以直接编译运行,并能够正常打包。

是我画蛇添足了,项目导入后直接点运行就会自动生成那几个缺失的类,不需要自己引入额外的插件生成,前提是JAVA_HOME的值Java版本跟这个项目的相匹配

当前项目用的是 Java 17,对应使用的是 Jakarta EE,所以不需要引入该插件。
如果您想要使用 Java 8 和 Java EE 则需要引入该插件,具体的文档可以参考 QueryDSL 的文档。

@yihleego
Copy link
Owner

另外还想请教一下,rpa-client里面airtest文件夹下代码与原版Airtest相比,是否有做过什么修改或者优化?

我在开发这个项目的时候,Airtest 有一个小问题会导致 Windows 某些特殊的窗口会消失,所以我把源码放到项目里了,修改了那部分代码。

然后我给 Airtest 提交了一个 PR,目前已经合并到主分支了,所以最新版没有这个问题了,您可以删除项目中的 Airtest 代码,直接使用官方版本的。
pip install airtest==1.2.10.2

@ddkftc
Copy link
Author

ddkftc commented May 21, 2023

另外还想请教一下,rpa-client里面airtest文件夹下代码与原版Airtest相比,是否有做过什么修改或者优化?

我在开发这个项目的时候,Airtest 有一个小问题会导致 Windows 某些特殊的窗口会消失,所以我把源码放到项目里了,修改了那部分代码。

然后我给 Airtest 提交了一个 PR,目前已经合并到主分支了,所以最新版没有这个问题了,您可以删除项目中的 Airtest 代码,直接使用官方版本的。 pip install airtest==1.2.10.2

非常感谢,正好我也需要修改Airtest的部分方法,加下超时时间等参数,这下改起来更方便了👍

@yihleego yihleego pinned this issue Jul 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

2 participants