Автоматизируйте приложение Ember.js с помощью Selenium, когда свойства объекта изменяются во время выполнения

Я пытаюсь автоматизировать приложение Ember.js, используя Selenium+TestNg.

Раскрывающийся список в приложении имеет только один идентификатор свойства объекта. Однако каждый раз, когда я обновляю идентификатор страницы, он меняется, и шаблона нет. Например: первый раз, когда я открываю страницу с идентификатором = ember1398, и когда я обновляю страницу, тот же идентификатор объекта меняется на ember1097.

Я был бы признателен, если бы кто-то мог помочь мне преодолеть эту проблему. Я открыт для изменения инструмента/фреймворка, если это необходимо.


person Pawan Kumar Dwivedi    schedule 04.05.2016    source источник
comment
вы не можете использовать xpath для поиска элементов?   -  person theRoot    schedule 04.05.2016
comment
отображается только свойство id, и оно тоже меняется во время выполнения, и, поскольку нет шаблона изменений, создание xpath невозможно   -  person Pawan Kumar Dwivedi    schedule 04.05.2016
comment
Вы можете опубликовать схему кода...?   -  person theRoot    schedule 05.05.2016
comment
Вы когда-нибудь догадывались об этом?   -  person prospector    schedule 19.10.2017


Ответы (2)


Это известная проблема с Ember. Мы работаем со многими сторонними приложениями, чтобы интегрироваться с ними, поэтому мы проводим много автоматизированного тестирования с использованием селена, когда они используют ember, мы сталкиваемся с этой проблемой, что означает, что мы не можем тестировать код так же хорошо, как с другими партнерами. Я уверен, что есть веские причины использовать Ember, но возможность легко протестировать его с помощью Selenium не является одной из них. В Ember была открыта ошибка, но она была закрыта.

https://github.com/emberjs/ember.js/issues/11834

Пока ember не исправит это, я бы рекомендовал использовать другую среду JS, созданную для тестирования третьими сторонами с использованием чего-то другого, кроме JS или самой среды.

person Harry    schedule 31.10.2017

Поскольку желаемый элемент является EmberJS включенным элементом, некоторые из атрибутов, например. id будет генерироваться динамически. Например, ember371, ember382, ember393 и т. д. В этих случаях вы не сможете использовать полное значение атрибута id для поиска элемента. В качестве примера рассмотрим следующий элемент:

<input placeholder="" id="ember32" class="ssRegistrationField ssEmailTextboxField ember-text-field ember-view" type="email">

Значение атрибута id будет динамически изменяться каждый раз, когда вы обращаетесь к AUT (тестируемому приложению). Следовательно, чтобы найти элемент, решение состоит в том, чтобы построить динамический Стратегии поиска, вызывающие WebDriverWait несовместим с ExpectedConditions as visibilityOfElementLocated() следующим образом:

  • cssSelector:

    WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input.ssRegistrationField.ssEmailTextboxField.ember-text-field.ember-view[id^='ember']")));
    
  • xpath:

    WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[starts-with(@id, 'ember') and @class='ssRegistrationField ssEmailTextboxField ember-text-field ember-view']")));
    
person DebanjanB    schedule 05.03.2020