我在主页以外的任何页面上都找不到要与之交互的元素。我正在使用的电子应用程序有几个在应用程序启动时加载,但我只能访问第一页上的元素。我认为我切换页面的方式一定有错误,因为我对我如何寻找元素充满信心。更改页面和查找元素的代码段如下。
var mainhandle = await driver.getWindowHandle();
var windowhandles =await driver.getAllWindowHandles();
var mainhandle = await driver.getWindowHandle();
windowhandles.forEach(async newwindow => {
console.log(newwindow);
if(newwindow != mainhandle){
await driver.switchTo().window(newwindow);
console.log("switching to window " + newwindow)
var exists = await driver.findElements(By.css('#App > div > div.MuiPaper-root.MuiCard-root.jss10.MuiPaper-elevation1.MuiPaper-rounded > div.MuiCardHeader-root.jss14 > div.MuiCardHeader-action > button')).then(found => !!found.length);
if(exists==true){
console.log("ayyyyyyy we made it") ;
const newtask = await driver.findElement(By.css('#App > div > div.MuiPaper-root.MuiCard-root.jss10.MuiPaper-elevation1.MuiPaper-rounded > div.MuiCardHeader-root.jss14 > div.MuiCardHeader-action > button'));
newtask.click();
exists=false
}
else{
var testhandle = await driver.getWindowHandle();
console.log("Element not found in " + testhandle);
}
// await driver.close();
}
else{
console.log("this must be the main "+ mainhandle)
}
})
编辑:我想我应该补充一点,每个“切换到窗口”测试输出都显示一个新窗口,但“找不到元素”总是显示最后一个窗口句柄。我不确定这是否只是我测试和查看输出的方式的问题,或者是否还有其他问题。
答案 0 :(得分:0)
这种格式对我有用。希望它在未来对其他人有帮助:)
this.mainhandle = await driver.getWindowHandle();
var windowhandles =await driver.getAllWindowHandles();
for (let i = 0; i < windowhandles.length; i++) {
await driver.switchTo().window(windowhandles[i]).then(() => console.log('switched to NewWindow handle ' + windowhandles[i]))
await delay(100)
if(await driver.getTitle().then(found => found == "Job Plan Manager")){
this.JPMhandle = await driver.getWindowHandle()
//do the work
break;
}
}