金诺网站建设,my最新域名是什么,网站建设的收获,做网站用什么服务器比较好问题产生原因#xff1a;1.期望能力选项参数丢失
例如#xff1a;capabilities.setCapability(appWorkingDir, C:\\Program Files (x86)\\Tencent\\app)) 某些app需要设置目录属性才可以启动。
问题产生原因#xff1a;2.访问权限不足
例如…问题产生原因1.期望能力选项参数丢失
例如capabilities.setCapability(appWorkingDir, C:\\Program Files (x86)\\Tencent\\app)) 某些app需要设置目录属性才可以启动。
问题产生原因2.访问权限不足
例如开发工具 或者 WinAppDriver 没有权限访问目标app内存。
需要以管理员命令运行。
问题产生原因3.App启动延迟
例如App启动界面为加载成功代码逻辑已经运行此刻查找窗口的方法查找不到窗口id。
加入延迟启动属性capabilities.setCapability(ms:waitForAppLaunch, 5);等待5秒
问题产生原因4.App进程保护
例如目标App结果特殊处理隐藏了窗口指针以防止恶意程序读取登录等消息。
早期的盗QQ号程序就是通过检测登录窗口来实现HOOK钩子操作达到盗号目的。
解决方式需要分析内存以获取窗口指针。
其他解释: 这个错误消息表明您尝试访问的应用程序没有打开或者您尝试访问的应用程序没有正确注册 appid。 您需要检查您的代码是否正确打开了应用程序并且应用程序是否正确注册了 appid。 如果应用程序已经打开则可能是您尝试访问的应用程序的 appid 与实际注册的 appid 不匹配因此无法找到该应用程序的窗口。 如果应用程序没有打开则可能是您的代码没有正确调用应用程序的打开方法或者可能是应用程序存在某些问题导致无法正常启动。 请检查您的代码并根据上述情况进行调试。 排除以上3种简单可能、第四种主动内存查找方式访问app (前提该app没有刻意做安全加固、仅仅隐藏或动态设置了窗口指针)
传送门拿来主义java取窗口句柄_如何获取Java中的所有窗口句柄列表(使用JNA)_涛说精彩历史的博客-CSDN博客
package test.driver;import java.io.UnsupportedEncodingException;import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.platform.win32.WinUser;
import com.sun.jna.platform.win32.WinUser.WNDENUMPROC;
import com.sun.jna.win32.StdCallLibrary;public class WindowsVistByJNA {public interface User32 extends StdCallLibrary {User32 INSTANCE (User32) Native.loadLibrary(user32, User32.class);boolean EnumWindows(WinUser.WNDENUMPROC lpEnumFunc, Pointer arg);int GetWindowTextA(HWND hWnd, byte[] lpString, int nMaxCount);}public static void main(String[] args) {final User32 user32 User32.INSTANCE;user32.EnumWindows(new WNDENUMPROC() { int count 0;Override public boolean callback(HWND hWnd, Pointer arg1) {byte[] windowText new byte[512];user32.GetWindowTextA(hWnd, windowText, 512);String wText Native.toString(windowText);// get rid of this if block if you want all windows regardless of whether // or not they have textif (wText.isEmpty() || wText.contains(Default IME) || wText.contains(MSCTFIME UI) || wText.contains(Mode Indicator) || wText.contains(Window) ) { return true; } try {System.out.println(Found window with text hWnd , total (count) Text: new String(wText.getBytes(utf-8)));} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();} return true;}}, null);}}将 app 属性替换成 appTopLevelWindow 访问方式从上述JNA方法获取的HWND Windows窗口句柄以HEX 16进制传入 //capabilities.setCapability(app, appPath);capabilities.setCapability(appTopLevelWindow, 0x1309f6);
编程自行整合。
参考链接
https://github.com/Microsoft/WinAppDriver/issues/641
failed to locate opened application window with appid-掘金
java取窗口句柄_如何获取Java中的所有窗口句柄列表(使用JNA)_涛说精彩历史的博客-CSDN博客