2015-10-30 2 views
0

Я написал некоторые функциональные тесты для the Intern, которые предположительно должны работать на SauceLabs, BrowserStack, TestingBot, или моей собственной сеткой селена.Действительно ли стажер может работать на любом сервисе Selenium?

Тот же код, похоже, не работает на всех сервисах. Сначала я получил функциональные тесты, работающие над SauceLabs, поэтому я использую эту услугу как свою «базу», так сказать.

В браузере, тесты оказались неудачными, потому что команды выполнялись слишком быстро. Например, я использую .pressKeys('TEST\nIN\nPROGRESS\n'), где \n должен выполнять javascript на странице, чтобы превратить предыдущий текст в тег (например, теги SO для этого вопроса: [intern] [javascript] [testing]).

Эта команда должна привести к следующим:

[TEST] [IN] [PROGRESS] 

, но вместо этого приводит к

[TESTIN] [PROGRESS] 

вызывает мои утверждения на провал. Изменение команды pressKeys для

.pressKeys('TEST\n') 
.sleep(500) 
.pressKeys('IN\n') 
.sleep(500) 
.pressKeys('PROGRESS\n') 

не решить эту проблему. Тест будет проходить/сбой непоследовательно, с тегами иногда выходит как [TEST] [IN] [PROGRESS], а иногда и как [TESTIN] [PROGRESS].

Другим примером является то, что он не всегда будет ждать загрузки следующей страницы, когда I .click() по ссылке, даже после команды .sleep().

Что касается TestingBot, то приложению не удалось загрузить файлы, и я не мог на всю жизнь выяснить, как включить услугу file_watcher, необходимую для этого. У них есть file upload example here, но я не знаю, как настроить Intern, чтобы сделать это для меня.

Разве интерник не должен заботиться об этих различиях в облачных провайдерах для испытаний?

Есть ли стандартный способ написания моих тестов в Intern, чтобы я мог изменить поставщика облачных тестов без изменения самих тестов?

ответ

1

Должна быть возможность запускать один и тот же набор тестов против любых облачных принимала провайдеров Селен и они выполняют успешно, но есть некоторые вещи, которые вы должны сделать:

  1. Вы должны убедиться, что вы» вы правильно настроили поставщиков, чтобы все они запускали ту же версию Selenium. Для этого нет стандарта; каждый поставщик использует другой ключ для определения версии Selenium для запуска. Проверьте документацию каждого провайдера на правильный ключ.

  2. Вам необходимо написать тесты, в которых нет условий гонки. То, что вы описываете здесь, звучит как классическое условие гонки, в котором вы выполняете какое-то действие, которое выполняется асинхронно, и это происходит только в средах, которые выполняют операции в течение определенного периода времени. Модифицируя этот конкретный тест, чтобы он имел find timeout, а затем пытается использовать find, элемент, который вы ожидаете получить при обращении с возвратным ключом, должен быть хорошим решением, так как это позволит вам ждать столько, сколько необходимо, не замедляя ваш тест.

К сожалению, даже с этим советом, все облачными провайдерами прошли для тестирования веб-браузера является мусор и беспорядок с вещами в пути, который случайно вызывает тесты ломаться. BrowserStack - это лучший способ избежать этого, но даже они делают что-то, чтобы время от времени прерывать тесты, которые отлично работают в локально размещенной установке Selenium.

Для загрузки файлов Intern автоматически загружает файлы, если обнаружил, что удаленный провайдер поддерживает его, и вы допустили type путь к файлу на сервере, на котором запущен intern-runner. Вы можете проверить, поддерживает ли сервер загрузки, глядя на this.remote.session.capabilities.remoteFiles. Для этого необходимо включить обнаружение функции, и вы должны запустить Intern 3.0.6 или новее, если вы пытаетесь загрузить файлы на сервер Selenium на том же компьютере, что и intern-runner.

+0

Что касается условий гонки, это именно то, что здесь происходит. Тайм-аут find не устраняет проблему, с которой я столкнулся, но ключ возврата не регистрируется - мне нужно буквально замедлить команды, которые, как представляется, не выполняются 'sleep()'. – jperezov

+0

Это может помочь, если вы продемонстрируете весь тест вместо этой части теста, если этот совет не работает, поскольку в коде, не представленном в OP, может возникнуть вторичная проблема. –

+0

Я создал кодовый код (http://codepen.io/anon/pen/MaBpXR?editors=001), содержащий полный тест на провал. – jperezov

Смежные вопросы