1

我在除主页之外的任何页面上都找不到我想与之交互的元素。我正在使用的电子应用程序有几个在应用程序启动时加载,但我只能访问第一页上的元素。我认为我切换页面的方式一定有错误,因为我对寻找元素的方式很有信心。更改页面并查找元素的代码段如下。

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)  
  }
  
  }) 

编辑:我想我应该补充一点,每个“切换到窗口”测试输出都会显示一个新窗口,但“找不到元素”总是显示最后一个窗口句柄。我不确定这是否只是我如何测试和查看输出的问题,或者是否还有其他问题。

4

1 回答 1

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;
    }
}
于 2021-06-28T16:46:12.357 回答