我正在使用Winium.Desktop为我的公司自动执行一项桌面任务。第一步是登录,然后打开一个新窗口。下一步是填充一个表单,有时新窗口不会被聚焦。因此,自动化在当前聚焦的窗口(来自自动化的旧窗口)上继续。在网上搜索,我发现了这个:
1: String parentHandle = driver.getWindowHandle();
2: for (String handle: driver.getWindowHandles()) {
3: if (!parentHandle.equals(handle))
4: driver.switchTo().window(handle);
5: }出现异常: java.lang.ClassCastException: java.lang.Long不能转换为第2行上的java.lang.String
我不确定我是否可以使用它,但上面的代码是用于浏览器窗口的,这不是我的情况。
如何将注意力集中在新程序窗口上?
谢谢
发布于 2017-10-14 01:52:01
您需要切换窗口,然后才能匹配示例代码condition...See
//wait for few seconds for loading site
for (String windows : driver.getWindowHandles()) {
driver.switchTo().window(windows);
if (driver.getCurrentUrl().startsWith("xyz.com")) {
//Your Operation
}
if (driver.getCurrentUrl().startsWith("yzx.com")) {
//Your Operation
}
}希望它能解决你的问题
发布于 2017-10-17 20:56:20
所以我想出了一个临时的解决方案。
public static final <T> T nthElement(Iterable<T> data, int n){
int index = 0;
for(T element : data){
if(index == n){
return element;
}
index++;
}
return null;
}
public static void focusNewWindow() {
Object count = nthElement(driver.getWindowHandles(), 0);
driver.switchTo().window(count.toString());
}每次我在自动化中调用此窗口时,它都会成为窗口列表(内部)中的第一个元素。所以我做了一个函数,根据索引返回一个元素,并将0传递给第二个参数。
它是暂时的,因为如果你在没有打开其他窗口的情况下运行自动化,它就会起作用。
https://stackoverflow.com/questions/46735337
复制相似问题