Javascript 量角器(3.0.0)/Webdriver(2.53.0)切换选项卡错误
我使用当前版本的webdriver/Digrator进行了以下测试(请参阅标题)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
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中导航。在我的情况下,除了使用睡眠,我找不到任何其他解决方案:(