selenium获取不到所有窗口句柄? 电脑获取窗口句柄失败
获取窗口句柄失败?
貌似你是创建了一个线程,然后在这个线程里面调用AfxGetMainWnd~~~~这样是无法获得主窗口句柄的,这个函数只能获得当前线程的窗口句柄
MSDN的说明:
If the function is called from a secondary thread in the application, the function returns the main window associated with the thread that made the call.
正确做法是:你在创建线程时把窗口的的句柄以参数形式传入去
怎么通过selenium实现在新窗口打开链接
WebElement link = element.findElement(By.tagName("a"));
String href = link.getAttribute("href");
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("window.open('" + href + "')");
具体方式就是拿到一个连接的WebElement对象,然后通过getAttribute("href")属性获取它的链接地址.
然后通过调用javascript脚本的方式,执行window.open()方法在一个新窗口打开这个链接.
然后需要通过切换handle的方式跳转到这个新的页面去.具体方法:
for (String toHandle : driver.getWindowHandles()) {
if (toHandle.equals(curHandle)) {
continue;
}
driver.switchTo().window(toHandle); //切换到另一个新句柄
SubjectPage subPage = PageCreator.createPage(SubjectPage.class);//创建页面,我自己封装的,可忽略
driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
// TODO
subPage.closeMe(); //自己封装的,忽略...
driver.switchTo().window(curHandle);
}
网页打开后出现对话框“无效的窗口句柄”是怎麽回事?怎样消除?
试试:
IE——工具——internet选项——高级——禁用脚本调试前面打勾
从开始——运行
输入命令regsvr32 actxprxy.dll 确定
输入命令regsvr32 shdocvw.dll 确定
用IE修复专家,或者别的修复工具修复IE和注册表
如何获取当前窗口句柄
调用格式: 〈整数型〉 对象.取窗口句柄 () - 系统核心支持库->窗口
英文名称:GetHWnd
取出本窗口或窗口组件的窗口句柄(即HWND)。本命令为高级对象成员命令。
操作系统需求: Windows
调用格式: 〈整数型〉 取鼠标所在窗口句柄 () - 应用接口支持库->窗口操作
英文名称:GetHwndFromPoint
取鼠标所在窗口句柄。本命令为初级命令。
操作系统需求: Windows