E / launcher - ссылка на устаревший элемент: элемент не прикреплен к документу страницы - PullRequest
0 голосов
/ 31 августа 2018

У меня определены следующие два сценария:

@high @basic
  Scenario Outline: dropdown boxes exist
    When I am on the Enernoc application
    Then application is running
    And <dropdown box> is present

    Examples:
      |dropdown box|
      |templateSelection|
      |templateDeliveryPathSelection|
      |templateLocaleSelection|


  @high
  Scenario Outline: dropdown boxes appear and work as expected.
    Given I am on the Enernoc application
    Then application is running
    When click <box>
    Then <option> present in <box>

    Examples:
      |box| option|
      |templateSelection| Apparent Energy |
      |templateDeliveryPathSelection| EMAIL |

Код:

Given(/^I am on the Enernoc application$/, function (callback) {
        browser.ignoreSynchronization = true; // To be added if the application is non-angular
        browser.driver.manage().window().maximize(); // To maximize the window
        browser.get("http://d3qdeak1vbuqh4.cloudfront.net/template_definition").then(function () {
            callback(); // To tell the cucumber that we are done with this step
        });
    });
Then(/^application is running$/, function (callback) {
        browser.manage().timeouts().pageLoadTimeout(3000);
        callback();
    });
Then(/^(.*) is present$/, function (dropdown,callback) {
        expect(element(by.id(dropdown)).isPresent());
        callback();
    });
When(/^click (.*)$/, function (dropdown,callback) {
        EnernocHomePage.clickDropdown(dropdown,callback);
    });
Then(/^(.*) present in (.*)$/, function (value,dropdown,callback) {
        EnernocHomePage.checkDropdown(value,dropdown);
        callback();
    });

В другом файле у меня есть этот код:

clickDropdown: function(dropdown,callback) {
        element(by.id(dropdown)).click().then(function () {
           callback();
        });
    },

    checkDropdown: function (value,dropdown) {
       expect(element(by.id(dropdown)).$('option:checked').getText()).eventually.equal(value);
    },

Я получаю сообщение об ошибке, сообщающее об этом:

stale element reference: element is not attached to the page document
  (Session info: chrome=68.0.3440.106)
  (Driver info: chromedriver=2.41.578706 (5f725d1b4f0a4acbf5259df887244095596231db),platform=Mac OS X 10.13.6 x86_64)
[12:15:17] E/launcher - StaleElementReferenceError: stale element reference: element is not attached to the page document
  (Session info: chrome=68.0.3440.106)
  (Driver info: chromedriver=2.41.578706 (5f725d1b4f0a4acbf5259df887244095596231db),platform=Mac OS X 10.13.6 x86_64)

Как я могу это исправить? Кажется, что по какой-то причине он не находит элемент при попытке получить к нему доступ. Есть идеи?

Ошибка, похоже, в разделе checkDropdown согласно подробному выводу.

...