How do i supply “rootelement” option while testing protractor interatively

≯℡__Kan透↙ 提交于 2020-01-02 01:55:12

问题


When I execute node elementexplorer.js http://127.0.0.1:8080/app/view1

I get the following error:

There was a webdriver error: Error Error while waiting for Protractor to sync with the page: "root element (body) has no injector. this may mean it is not inside ng-app."

Please let me know how to provide the rootelement option.


回答1:


At the moment, rootElement defaults to body. If you don't have your ng-app in the body, you will get that error. It can be set manually tho.

You need to change the rootElement. You can do it directly from the interactive view by running:

browser.rootEl = 'div#ng-app-located-here';

Assuming that your ng-app is located at div#ng-app-located-here




回答2:


In this case, you need to specify on which element your ng-app is set. Add rootElement in your protractor conf.js, for example:

rootElement: 'div#nested-ng-app'  // by default, it is 'body'

FYI, this is because protractor angular-specific custom locators, like by.binding or by.model use rootElement as a root for the search, quote from the change log:

Protractor's custom locators (by.binding, by.model, etc) use config.rootElement as the root for all their searches. This meant that config.rootElement was used both to specify how to get hold of Angular's injector as well as where to begin searching for elements. This does not work for all cases, for example if a dialog should be searched for elements but is a sibling, not a child, of ng-app.



来源:https://stackoverflow.com/questions/28836134/how-do-i-supply-rootelement-option-while-testing-protractor-interatively

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!