1

我想切换到另一个选项卡和新的标签上使用的控制,我得到这个错误:量角器 - 开关标签错误

UnknownError: null value in entry: name=null

这是测试(重要部分):

element(by.repeater("project in projects").row(1).column("{{project.name}}")).click().then(function(){ 

     flow.timeout(5000); 
     $('.project-data a').click().then(function() { 
      browser.getAllWindowHandles().then(function (handles) { 

     flow.timeout(5000); 

      browser.switchTo().window(handles[1]).then(function() { 
      browser.sleep(5000); 
      browser.ignoreSynchronization = true; 

      }); 

测试中还有其他部分,但它不相关,因为我在这部分中得到了错误。 流量是这样的: 点击链接后,标签打开,好像它切换到新标签 - 然后失败并关闭窗口。

+0

纠正我,如果我错了,但不是browser.getAllWindowHandles()获取打开浏览器的所有WINDOWS?你说它切换到选项卡,并失败并关闭,对我来说,似乎链接只是打开一个选项卡和切换焦点,你没有成功切换到该选项卡。 – vrachlin

+0

我也在想它,但它似乎像Windows和Tabs切换相同的方式.. – user2880391

+0

你可以打印'browser.getAllWindowHandles()'并看到你得到的价值?如果你得到2,那么你做的是有效的,如果没有,那么你不应该改变窗口。当你在同一页面切换标签时,我不认为窗户把手是必需的。 –

回答

1

代替flow.timeout(5000)使用browser.wait像这样:

browser.wait(function() { 
    return handles.length > 1 
}, 5000); 

代替作为第二flow.timeout(5000)使用:

browser.wait(function() { 
    return browser.getCurrentUrl().then(function (url){ 
     return url = "url of the second tab"; 
    }); 
}, 5000); 

它看起来更干净,更好的处理,最重要的是,会做的工作