Рубрики
Без рубрики

Строительство пользовательских локаторов в OpenTest

В предыдущем проекте я должен был использовать изящный инструмент под названием Ofentest для организации автоматизации тестирования на … Tagged с OpenSource, Testing, Android, JavaScript.

В предыдущем проекте я должен использовать изящный инструмент под названием OpenTest Чтобы организовать автоматизацию тестирования в приложении Android. Это еще не широко популярная рамка, но я надеюсь, что она вырастет, потому что она очень хорошо решает одну конкретную проблему. OpenTest позволяет команде QA писать тесты Однажды Это может пройти через несколько сред и платформ. Это солидный инструмент, если вы хотите сделать что -то вроде автоматизации приложения для iOS и Android, которое имеет идентичные пользовательские интерфейсы, или просто хотите общий язык для ваших веб -и мобильных приложений. OpenTest также написан в YAML, поэтому он доступен даже для довольно младших команд SDET, и он содержит множество действий, основанных на ключевых словах, которые делают тесты пользовательского интерфейса простыми для сочинения.

В большинстве случаев вы просто структурируете тесты, как это:

- description: Verify Text is Accurate
  action: org.getopentest.appium.AssertElementText
  args:
    locator: $data("locators/view").area.element
    text: 'Whatever text I expect to see'

В большинстве случаев вы можете найти элементы по их id или Текст Свойства, но в тех случаях, когда вам необходимо построить пользовательские локаторы на лету, может быть полезно знать, как Opentest интерпретирует JavaScript.

JavaScript может быть динамически вставлен в тесты Opentest с использованием Скрипт Tag, и если бар ( ) вставлен в первую строку, то все, следующее, он интерпретируется как JavaScript, так что вы можете использовать многострочные блоки JavaScript. Для получения дополнительной информации о поддержке сценариев в OpenTest, Прочитайте документы Анкет

На данный момент все, что вам нужно знать, это то, что JavaScript может быть динамически вставлен в любом месте теста, и что вы можете вызвать все свои основные Действия как AsserTelementText с помощью специального $ runaction Команда в ваших блоках JavaScript.

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

В этом примере у нас есть локаторы в нашем Opentest /данные Репозиторий, который соответствует элементам в интерфейсе.

Таз и Джулия появляются в моей системе управления сотрудниками, и рядом с каждым из их имен я вижу кнопку для сброса их паролей. У нас будет два отдельных локатора для двух кнопок «Сброс пароля». Чтобы проверить это, мне нужно найти строку с их именем в нем, и Тогда Найдите соответствующую кнопку сброса пароля, чтобы выбрать. Мы можем использовать Строка Согласование Чтобы напрямую вставить имя каждого человека в локатор XPath.

tazBtn:   { xpath: "//ClassName[@resource-id='personRow' and @text='Taz']/following-sibling::android.widget.Button[@resource-id='passwordResetButton']" }
juliaBtn: { xpath: "//ClassName[@resource-id='personRow' and @text='Julia']/following-sibling::android.widget.Button[@resource-id='passwordResetButton']" }

OpenTest делает хорошую работу по отделению логики тестирования от тестовых данных. Ссылки на строки данных, числа и другие значения могут быть включены в тесты, используя ссылки, отформатированные как: $ data ("имя файла"). Parent.child Анкет

Вот пример объявления текстовой метки напрямую, а затем использования значения, объединенного в идентификатор локатора.

- description: Verify Text Label
  script: |
    var label = "Some text.";
    $runAction("org.getopentest.appium.AssertElementVisible", 
    {
    locator: "//android.widget.TextView[@text='" + label + "']"
    });

Важно помнить, что прямая конкатенация строки не будет работать в ваших строках локатора, вам нужно явно объявить новую переменную для строки, которую вы используете в верхней части нашего блока JavaScript.

Вот пример, который показывает, как структурировать какой -то код, который опирается на вставку $ data Значение в Текст свойство, чтобы мы могли ввести его в поле. В этом случае мы выводим из списка продуктов в нашем $ data каталог.

- description: Enter product name into text field
  script: |
      var textToEnter = $data("products").product1.name
      $runAction("org.getopentest.appium.SendKeys", {
        locator: $data("locators/form").input,
        text: textToEnter
      });

У вас может быть соблазн определить свой Текст Значение непосредственно с $ data ценность, но это не сработает, и вы должен Явно определите это значение сначала в переменной в верхней части блока JavaScript.

Я надеюсь, что это спасает кого -то немного разочарования. Если вы используете OpenTest в проекте, я бы хотел услышать, что вы думаете об этом на Twitter Анкет

Оригинал: “https://dev.to/samelawrence/constructing-custom-locators-in-opentest-44hm”