Javascript 量角器(3.0.0)/Webdriver(2.53.0)切换选项卡错误

Javascript 量角器(3.0.0)/Webdriver(2.53.0)切换选项卡错误,javascript,selenium,webdriver,protractor,Javascript,Selenium,Webdriver,Protractor,我使用当前版本的webdriver/Digrator进行了以下测试(请参阅标题) it('检查选项卡',()=>{ 常量url1=https://stackoverflow.com/'; 常量url2=http://programmers.stackexchange.com/'; 让windowHandles={ 旧选项卡:“”, 新选项卡:“” }; 等待browser.get(url1); 等待browser.getWindowHandle()。然后(handle=>{ windowHand

我使用当前版本的webdriver/Digrator进行了以下测试(请参阅标题)

it('检查选项卡',()=>{
常量url1=https://stackoverflow.com/';
常量url2=http://programmers.stackexchange.com/';
让windowHandles={
旧选项卡:“”,
新选项卡:“”
};
等待browser.get(url1);
等待browser.getWindowHandle()。然后(handle=>{
windowHandles.oldTab=句柄;
});
等待browser.executeScript('window.open(“+url2+”,“任意”);
等待浏览器。getAllWindowHandles()
.然后(句柄=>{
expect(句柄[0]).toEqual(windowHandles.oldTab);
windowHandles.newTab=句柄[1];
返回browser.driver.switchTo().window(windowHandles.oldTab);
})
.然后(()=>{
让handle=browser.driver.getWindowHandle();
expect(句柄).toEqual(windowHandles.oldTab);
})
.然后(()=>browser.sleep(6000));
});
有趣的是,资产运作良好;它们都是绿色的。 但它不会切换回第一个选项卡

我是遗漏了什么还是真的是一个bug

更新 在我的FireFox
窗口中。open
打开一个窗口,而不是一个选项卡,在窗口之间切换实际上是有效的

我可以接受在Chrome中打开窗口而不是选项卡的解决方法,不过我真的认为,如果当前的窗口句柄告诉您在仍然处于相同状态时已切换,则这是一个bug

更新2 即使打开windows,
Chrome
也不会切换,而
FireFox
会切换。我报告了一个错误

这是我的新测试:

it('checks tabs', async () => {
const url1 = '/login';
const url2 = config.chatLaunchUrl;

let windowHandles = {
  oldTab: '',
  newTab: ''
};

await browser.get(url1);
await browser.getWindowHandle().then(handle => {
  windowHandles.oldTab = handle;
});

// opening new window sending CTRL+N
await browser.actions()
  .sendKeys(protractor.Key.chord(protractor.Key.CONTROL, "n"))
  .perform();

await browser.getAllWindowHandles()
  .then(handles => {
    expect(handles[0]).toEqual(windowHandles.oldTab);

    windowHandles.newTab = handles[1];
    return browser.driver.switchTo().window(windowHandles.newTab);
  })
  .then(() => {
    // this works
    return browser.get(url2);
  })
  .then(() => {
    return browser.driver.switchTo()
      .window(windowHandles.oldTab)
      .then(() => browser.driver.executeScript('window.focus();'));
  })
  .then(() => {
    let handle = browser.driver.getWindowHandle();
    expect(handle).toEqual(windowHandles.oldTab);
  })
  .then(() => browser.sleep(6000));
});
更新3 Chrome和Firefox之间的区别在于,如果我切换到Firefox,浏览器窗口就会聚焦,而Chrome则不会。测试可以继续进行,铬也不会出现问题。所以这是一个较小的错误


(相关链接:

  • -不同情况
  • -多年前关闭
  • -我的新错误报告)

  • 从视觉上看,您将看到它切换到第二个选项卡,但您不会看到它切换回第一个选项卡(可能这是chrome或chromedriver中的错误?)。实际上,测试命令被发送到正确的选项卡,您的测试将通过或失败。

    从视觉上看,您将看到它切换到第二个选项卡,但不会看到它切换回第一个选项卡(可能是chrome或chromedriver中的错误?)。但事实上,测试命令被发送到正确的选项卡,您的测试将适当地通过或失败。

    甚至我也遇到了量角器3.0+的问题,即在选项卡之间切换和在iFrame中导航。在我的情况下,除了使用睡眠,我找不到任何其他解决方案:(甚至我也有Digrator 3.0+的问题,在选项卡之间切换和在iFrame中导航。在我的情况下,除了使用睡眠,我找不到任何其他解决方案:(