Как отключить ожидание загрузки страницы в ProTractor - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь загрузить файл в ProTractor в приложение, которое разработано в Angular с Electron.

Чтобы сделать это вручную, мне нужно нажать на кнопку «Обзор» и затем выбрать файл в диалоговом окне «Открыть».

Я уже успел часть для обеспечения пути кфайл и нажмите кнопку «Открыть» в диалоговом окне с помощью AutoIt

var autoIt = require('autoit');
autoIt.Init();
autoIt.WinActivate("Open");
autoIt.WinWait("Open");
autoIt.ControlSetText("Open", "", "1148", appPath);
autoIt.ControlClick("Open", "", "1");

Но эта часть кода не будет выполнена после нажатия кнопки «Обзор»

element(by.id('browseText')).click();

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

Есть ли возможность отключить ожидание загрузки страницы и выполнить действие сразу после щелчка?

К сожалению, отключениене помогло ожидание Angular, а также игнорирование синхронизации

browser.waitForAngularEnabled(false);
browser.ignoreSynchronization = true;

Заранее благодарю за поддержку.

ОБНОВЛЕНО

Проблема в сроках, потому что когдаЯ пытаюсь выполнить следующий небольшой код:

browser.waitForAngularEnabled(false);
element(by.id('browseText')).click()
.then(function () {
    console.log("clicked");
});

browser.sleep(5000)
.then(function () {
    console.log("5 sec are over!");
}); // wait 5 sec

browser.sleep(3000);
console.log("End");

Происходит следующее:

  1. Сначала "Консоль" будет добавлена ​​в консоль без ожидания в течение 3 секунд.
  2. После этого откроется диалоговое окно, что означает, что кнопка была нажата
  3. И в конце тест не пройден с ошибкой «Тайм-аут функции, убедитесь, что обещание разрешается в течение 90000 миллисекунд».

Вот вывод этого кода:

[09:37:14] I/launcher - Running 1 instances of WebDriver
[09:37:14] I/direct - Using ChromeDriver directly...

..End
..F

Failures:

1) Scenario: Add an application # features\tst_General.feature:10
   V Before # features\steps\DataGrid.js:20
   V Before # features\steps\General.js:25
   V When The "bounce" application has been added # features\steps\General.js:65

   V After # features\steps\General.js:29
   × After # node_modules\protractor-cucumber-framework\lib\resultsCapturer.js:2
5
       Error: function timed out, ensure the promise resolves within 90000 milli
seconds
           at Timeout._onTimeout (C:\Users\10050296\Documents\workspace\sm-protr
actor-automation\node_modules\cucumber\src\user_code_runner.js:61:18)
           at ontimeout (timers.js:498:11)
           at tryOnTimeout (timers.js:323:5)
           at Timer.listOnTimeout (timers.js:290:5)

1 scenario (1 failed)
1 step (1 passed)
1m30.217s

1 Ответ

0 голосов
/ 24 октября 2018

Давайте прояснимся.Это работа 100%:

browser.waitForAngularEnabled(false);

Транспортир части, как я понимаю, тоже работают.Кнопка Browser нажата.Итак, вопрос в части Autoit.Вопрос - «Как запустить Autoit?»Просто добавьте sleep, чтобы проверить, является ли это waiting проблемой на стороне Autoit:

element(by.id('browseText')).click();
browser.sleep(5000); // wait 5 sec
...
autoit code
...

Если это работает, значит, проблема в Autoit ожидает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...