Можно ли использовать appium для тестирования веб-приложений?

приложение, которое я тестирую, является веб-приложением. Можно ли использовать Appium для проверки этого? На их веб-сайте говорится: "Appium-это платформа автоматизации тестирования с открытым исходным кодом для использования с родными и гибридными мобильными приложениями."

поэтому я не уверен, будет ли это работать для моего веб-приложения, поскольку это не родное приложение или гибридное приложение.

может кто-нибудь просветить меня?

спасибо!

6 ответов


прежде всего, вам нужно знать, какое веб-приложение вы хотите протестировать. Согласно информации от Saucelabs

существует три типа веб-приложений:

  1. нативное приложение
    Да, вы можете проверить его с помощью Appium, который является популярным инструментом для мобильного тестирования.
  2. гибридное приложение (родной + webview)
    Да, вы можете проверить его с помощью Appium, но с небольшим трюком, который для перехода в режим webview может потребоваться изменить контекст. Аппий.Ио
  3. веб-приложение (приложение, доступное из браузера, установленного на вашем мобильном устройстве, а не тот, который вы можете скачать и установить)
    Да, и подробности в аппиуме.Ио тоже.

кроме того, есть на самом деле другой тип приложения: гибридное приложение, но с настраиваемым webview.
Я боролся с этим в последнее время, потому что у меня проблемы чтобы найти и переключиться в режим webview.


Да, я уверен, что вы можете, посмотрите здесь:

EDIT: исправлена устаревшая ссылка ссылка на appium doc

кроме того, связанный вопрос здесь


Я нашел Appium очень громоздким в тестировании мобильных веб-приложений из-за того, что сенсорные действия не поддерживаются. С точки зрения Java, я обнаружил, что есть два основных варианта для разговора с Appium:Селен RemoteWebDriver и AppiumDriver из Appium Java client.

Селен RemoteWebDriver

до сих пор я смог протестировать наше веб-приложение на устройстве Android использование Selenium RemoteWebDriver и RemoteTouchScreen. Используя Selenium 3.6.0 и Appium 1.6.5, я протестировал 4 разных метода, чтобы щелкнуть элемент:

webDriver.findElement(locator).click();
new Actions(webDriver).moveToElement(findElement(locator)).click().perform();
new RemoteTouchScreen(new RemoteExecuteMethod(webDriver)).singleTap(((Locatable)webDriver.findElement(locator)).getCoordinates());
new TouchActions(webDriver).singleTap(locator);

на Android работают первые 3 метода, но 4 выдает исключение "не поддерживается". Я решил использовать метод 1 для кликов / нажатий и 3 для жестов.

в iOS методы 1, 2 и 4 выбрасывают исключение "еще не поддерживается", а метод 3 ничего не делает. Поскольку я не был готов инвестировать время в устранение неполадок пока мы тестируем только на Android в надежде, что Appium будет улучшен, а iOS будет лучше поддерживаться.

Appium Java client

мой опыт работы с клиентом Appium java (версия 5.0.4) был еще хуже. Кажется, нет всеобъемлющего учебника о том, как делать сенсорные действия, только несколько фрагментов кода, летающих по паутине. Поэтому мой ответ на этот вопрос-попытка его создать.

первый создайте экземпляр драйвера и перейдите на страницу:

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "Samsung Android S8");
capabilities.setCapability("browserName", "Chrome");
capabilities.setCapability("platformName", "Android");
MobileDriver appiumDriver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

appiumDriver.navigate().to("https://duckduckgo.com");

затем выполните сенсорное действие:

new TouchAction(appiumDriver).tap(appiumDriver.findElement(By.id("search_form_input_homepage"))).perform();

в результате: org.openqa.селен.WebDriverException: метод еще не реализован

С данное сообщение на форуме Я пришел к выводу, что мне нужно переключить контекст, чтобы иметь возможность делать сенсорные действия. Вторая попытка:

appiumDriver.context("NATIVE_APP");
new TouchAction(appiumDriver).tap(appiumDriver.findElement(By.id("search_form_input_homepage"))).perform();

это работает. Впрочем, только к слову.селектор id. Я не мог найти другого селектора это работает, когда в контексте NATIVE_APP. И поскольку большинство элементов на нашем веб-сайте не имеют идентификатора, мне нужен селектор xpath. Третья попытка:

appiumDriver.context("NATIVE_APP");
new TouchAction(appiumDriver).tap(appiumDriver.findElement(By.xpath("//*[@id=\"search_form_input_homepage\"]"))).perform();

в результате которых: org.openqa.селен.NoSuchElementException: элемент не может быть расположен на странице с помощью заданных параметров поиска.

другие обходные пути, которые я мог бы придумать, такие как выбор WebElement в контексте CHROMIUM, а затем перенос местоположения в NATIVE_APP контекст не является опцией, поскольку системы координат различаются (пиксели браузера и пиксели экрана).

и не забудьте вернуться к контексту CHROMIUM по умолчанию после каждого действия касания. Таким образом, полный код единственного рабочего примера становится:

try {
    appiumDriver.context("NATIVE_APP");
    new TouchAction(appiumDriver).tap(appiumDriver.findElement(By.id("search_form_input_homepage"))).perform();
} finally {
    appiumDriver.context("CHROMIUM");
}

на данный момент мой вывод заключается в том, что тестирование мобильных веб-приложений с Appium еще не совсем там.


возможно, вот пример того, как создать экземпляр для safari в Ruby:

функции = {

    :device => 'iPhone Simulator',
    :browserName => 'iOS',
    :version => '7.1',
    :platform => 'Mac',
    :app => 'safari'
  }
  $mobile_browser = Selenium::WebDriver.for(
      :remote,
      :desired_capabilities =>capabilities,
      :url => "your_server/wd/hub")

перед загрузкой appium и нажмите кнопку Запустить, чтобы запустить appium server.


Если вы говорите о мобильный веб-приложений, да, вы можете использовать сайте Appium для их испытания


да, Appium может тестировать как собственные, так и гибридные приложения.

для Windows машины, скачать: Appium для Windows. Для MAC машины, скачать: Appium dmg файл.

Windows нужно: Просто Сайту Appium.исполняемый. + apk файл (android) + тестирование устройства + Android SDK установлен.

MAC нуждается Appium DMG file + .приложение./файл + прибор + XCode (с сертификата обеспечения) + АНТ + Иос-в WebKit-прокси-отладка.

для Веб-приложения, поскольку они основаны исключительно на браузере, Appium также хорошо работает на них.

Ссылка для справки: https://github.com/appium/appium/blob/master/docs/mobile-web.md