Привет, у меня есть некоторые проблемы с получением базового теста транспортира.
Моя настройка:
- Я использую requirejs, поэтому инициализирую angular с помощью angular.bootstrap(), а не ng-app attr. Согласно документам транспортира, это не поддерживается из коробки, но, похоже, отлично работает для тестов, которые не включают щелчок.
-
Транспортир conf.json:
"use strict"; exports.config = { specs: '../E2ETests/**/*.js', chromeOnly: true, getPageTimeout: 30000, allScriptsTimeout: 30000 }
- Я использую некоторые сторонние прошивки jquery, которые я переношу в директивы, я подозреваю, что это может быть частью проблемы.
Тест:
"use strict";
describe('When clicking should add stuff', function () {
var ptor;
beforeEach(function () {
browser.get('https://localhost/myApp');
ptor = protractor.getInstance();
});
it('add stuff', function () {
// If I comment this, the test pass.
element(by.id('add-stuff-button')).click();
// This does not matter fails on the line above..
expect(browser.getTitle()).toBeDefined();
});
});
Ошибка:
UnknownError: unknown error: Element is not clickable at point (720, 881). Other element would receive the click: <div class="col-md-5 col-md-offset-5">...</div>
(Session info: chrome=37.0.2062.124)
(Driver info: chromedriver=2.10.267521,platform=Windows NT 6.1 SP1 x86_64)
Мысли
Хромидра найдет кнопку, потому что, если я изменю идентификатор, он жалуется, что ни один элемент не найден. Поэтому я думаю, что проблема в том, что кнопка перемещается из своего исходного положения. Поскольку функция element (***) должна ждать завершения angular, я подозреваю, что ее сторонние плагины могут помешать, поскольку они могут не использовать angular api для получения данных и т.д. Таким образом, angular считает, что это сделано но затем сторонний штепсель заполняет и перемещает вещи вокруг.
Любые идеи, что делать? Если проблема связана с сторонними заглушками, могу ли я как-то сказать angular, что происходит третья сторона, а потом позже расскажет об этом, когда она будет выполнена?
спасибо бром Twd