在量角器

时间:2016-04-07 17:42:23

标签: javascript html angularjs selenium protractor

目前我正在尝试点击页面加载前出现的对话框。我正在使用browser.get(extentionHere)函数以类似于这样的方式加载页面:

it(..., function(){ browser.get('#/frontPage); element(dialogIdentifier).click(); 当页面加载时,Protractor在超时之前什么都不做,对这种行为的调查让我发现这是页面的其余部分挂起的结果等待'单击对话框。本质上,URL是没有意义的,因为Protractor认为页面没有加载,并将对话视为更多的浏览器功能(它不是)而不是网页。因此,元素(...)。click()没有执行,当然,程序无法继续。 在尝试找到解决方案时,我发现函数browser.executeAsyncScript,我认为可能允许我按顺序执行多个函数。我虽然无知,但却尝试了这个:

    browser.executeAsyncScript('browser.get("#/frontPage")').then(function () {  
          element(dialogIdentifier)).click();
    });

,正如我提出这个问题所暗示的那样,没有用(给我某种"浏览器不是函数"错误),如果我甚至正确地使用这个函数用于正确的目的它似乎符合要求;允许我单击对话框。 任何帮助将不胜感激(我不限制任何功能的答案。所以,请让我知道你有什么想法。)

提前致谢。

1 个答案:

答案 0 :(得分:1)

我假设角度没有加载,因为在页面加载之前弹出对话框。下面的代码告诉量角器不要等待角度同步,然后在单击对话框后恢复同步。

browser.ignoreSynchronization = true;
browser.get("http://www.google.ca").then(function () {
    element(dialogIdentifier).click();
});
browser.ignoreSynchronization = false;