使用java机器人类

使用java机器人类,java,browser,awtrobot,Java,Browser,Awtrobot,我想在浏览器的地址栏中写一个地址,并使用javaRobotclass单击一个链接。如何在某个窗口中跟踪不同的对象?只要看一看API,任何这样做的人都应该知道,通过Robot类没有“trackComponent(组件特定组件)”方法,您有两件事情可以帮助您: 1-getPixelColor (more than help, seems useless for you by now, maybe i'm wrong). 2-createScreenCapture. 第二种方法可能是解决您的问题的方

我想在浏览器的地址栏中写一个地址,并使用java
Robot
class单击一个链接。如何在某个窗口中跟踪不同的对象?

只要看一看API,任何这样做的人都应该知道,通过Robot类没有“trackComponent(组件特定组件)”方法,您有两件事情可以帮助您:

1-getPixelColor (more than help, seems useless for you by now, maybe i'm wrong).
2-createScreenCapture.

第二种方法可能是解决您的问题的方法,您可以拍摄屏幕的图片,然后使用一些图像处理器(javaCV可以帮助您:)跟踪您拍摄的屏幕上的组件(例如:从像素xxx到像素yyy是浏览器的地址栏),当然你需要阅读一些关于javaCV(OpenCV)的文档来完成这项工作,之后只需使用移动光标和输入填充组件的键的方法,希望有人能给出一个更简单的方法来完成这项工作,但我认为通过这种方式,您可以学习一些JavaCV,这是一个非常强大的工具。

也许您可以使用键盘快捷键输入地址
CTRL-L
ALT-D
似乎是访问地址栏的最标准快捷方式(
CMD-L
当然适用于Mac)。对不起,我在度假。谢谢@jahroy。这真的帮了我大忙,太好了!我想我完全没有抓住要点,但为了以防万一,我把它放在那里了。JavaCV不强大,但OpenCV强大。JavaCV是一个包装器。与JavaCV移动,这可以通过在C++中使用OpenCV和通过JNI连接到java,因为JavaCV有非常低的学习资源。除此之外,如果图像被调整大小,图像的x和y位置将没有帮助。取而代之的是,使用阈值、边查找或移动到最佳模板matching@Knight主题是java,我知道OpenCV是真实的(正如您所说的JavaCV只是一个包装器),但由于他只需要图像处理器功能,JavaCV就可以完成这项工作(这方面的文档不太好?也许是的,但是如果他不知道C++的用法,不如尝试一下C++头)。关于阈值、边缘查找或模板匹配,你说得对多了+1,x和y位置不是最好的方法,但你所说的图像大小调整是什么意思?是否要处理屏幕截图,为什么应该存在大小调整?分辨率问题?这可以解决。通过调整大小,我的意思是,认为地址栏位置编码为当web浏览器“最大化”时,x=125,y=124.用户决定重新调整浏览器的大小。现在x=125,y=124的理论不起作用了。好吧,你是对的,但是为什么我要截屏,然后等10秒钟,然后分析截屏,然后做机器人的事情?如果我们要做机器人类的事情是一个即时的过程,那么截屏分析Epicture doMovesAndKeyPress,这个以毫秒为单位发生,我的意思是用户甚至不会注意到光标移动(如果我们将光标移回自动移动和单击之前的初始位置)。