【问题标题】:Not able to navigate from Non-angular page to angular page in iframe无法从非角度页面导航到 iframe 中的角度页面
【发布时间】:2016-08-29 04:14:35
【问题描述】:

我正在尝试在 facebook 中自动化 Angular 应用程序。我能够成功登录到 facebook,但是每当我尝试导航到 iframe 中的 angular 页面时,它就会不断将我踢出此错误消息“Error while waiting Protractor to sync with the page:”window.角度未定义。这可能是因为这是一个非角度页面,也可能是因为您的测试涉及客户端导航,这可能会干扰 Protractor 的引导。"

规格

it('测试', function () {

    browser.driver.ignoreSynchronization = true;
    browser.driver.get(URL); //navigating to my facebook page
    browser.driver.sleep(500);

    //Login to facebook
    browser.driver.findElement(by.id('email')).sendKeys(email);
    browser.driver.findElement(by.id('pass')).sendKeys(password);
    browser.driver.findElement(by.id('login')).click();
    browser.driver.sleep(500);

    //navigating to angular page withtin iframe
    browser.driver.switchTo().frame(0);
    browser.waitForAngular();
    element(by.model('name')).click();

});

配置

exports.config = { seleniumAddress: 'http://127.0.0.1:4444/wd/hub', 能力:{ “浏览器名称”:“铬”,

},
specs: ['test'],

framework: 'jasmine2',

jasmineNodeOpts: {

    onComplete: null,
     isVerbose: false,
     showColors: true,
    includeStackTrace: true,
   defaultTimeoutInterval: 5000
}

};

量角器版本 - 3.3.0 npm - 2.14.12 节点 - 4.2.4 茉莉花 - 2

日志

10:33:46.248 信息 - 正在执行:[切换到帧:0]) 10:33:46.292 信息 - 完成:[切换到帧:0] 10:33:46.300 信息 - 执行:[执行异步脚本:尝试{返回(函数(rootSelector,回调){ var el = document.querySelector(rootSelector);

试试{ 如果(window.getAngularTestability){ window.getAngularTestability(el).whenStable(callback); 返回; } 如果(!window.angular){ throw new Error('window.angular 未定义。这可能是 ' + '因为这是一个非角页面或因为你的测试涉及' + '客户端导航,会干扰量角器的' + '引导。详见http://git.io/v4gXM'); } 如果(angular.getTestability){ angular.getTestability(el).whenStable(callback); } 别的 { if (!angular.element(el).injector()) { throw new Error('根元素 (' + rootSelector + ') 没有注入器。' + ' 这可能意味着它不在 ng-app 内。'); } angular.element(el).injector().get('$browser')。 notifyWhenNoOutstandingRequests(回调); } } 捕捉(错误){ 回调(错误消息); } }).apply(this, arguments); }

HTML

我们的 html 代码中确实有 ng-app 和 iframe

<iframe id=" " class=" " frameborder="" src=" " style="" name="">
<!DOCTYPE html>
<html class=" " lang="" ng-app="appname" xmlns=" ">
<head>
<body class=" ">
</html>
</iframe>

任何帮助将不胜感激

【问题讨论】:

    标签: protractor


    【解决方案1】:

    你的 Angular 应用在​​ Iframe 中吗?

    切换到 defaultContent,然后尝试切换到 Iframe。

    browser.switchTo().defaultContent(); 然后

    browser.driver.switchTo().frame(0);

    Protractor 无法从错误中识别您的 Angular 应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-25
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2022-07-12
      • 1970-01-01
      • 2019-01-25
      • 2018-12-27
      相关资源
      最近更新 更多