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

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

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

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

1 ответ

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

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

Ценность стоимости idАтрибут будет динамически меняться каждый раз при доступе к AUT(Тестируемое приложение). Следовательно, чтобы найти элемент, решение состоит в создании динамических стратегий локатора, вызывающих WebDriverWait в сочетании с ExpectedConditions как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']")));
    

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

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

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

Другие вопросы по тегам