1. 首页 > 科技

selenium获取不到所有窗口句柄? 电脑获取窗口句柄失败

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