Жест касания драйвера Ruby Appium не работает

Настраивать

  • ruby 2.3.3p222 (21.11.2016, редакция 56859) [i386-mingw32]
  • appium_lib (9.4.9)
  • селен-webdriver (3.4.0)
  • touch_action (1.3.3)
  • вода (6.3.0)
  • Автономный сервер Selenium v3.4.0
  • appium-desktop-Setup-1.1.0-beta.4
  • Телефон Nexus 5 подключен к ПК через USB. Сервер Appium регистрируется в качестве узла для узла селеновой сетки (все работает нормально)

Требуемое действие / шаг для выполнения

  • Я хочу выполнить касание элемента (вместо щелчка)
  • При использовании версии selenium-webdriver> = 3.4.0

IRB

require 'appium_lib'
require 'touch_action'
grid_url = "http://localhost:4444/wd/hub" 
capabilities = {
'browserName' => 'chrome',
'platformName' => 'Android',
'deviceName' => 'Nexus5',
'newCommandTimeout' => '15000',
'javascript_enabled' => true 
}
browser = Appium::Driver.new(caps: capabilities, url: grid_url).start_driver
browser.get("https://www.google.nl")
sleep 5
inputfield = browser.find_element(:id, 'lst-ib')
inputfield.click
inputfield.send_keys("appium mobile gestures ruby")
sleep 2
button = browser.find_element(:id, 'tsbb')

Все идет нормально. Но когда я пытаюсь выполнить действие вкладки. это не удается

irb(main):026:0> button.touch_action(:tap)
NoMethodError: undefined method `executeScript' for #<Selenium::WebDriver::Remote::OSS::Bridge:0x3119b50>
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/touch_action-1.3.3/lib/touch_action/selenium-webdriver.rb:9:in `touch_action'
from (irb):26
from C:/Ruby23/bin/irb.cmd:19:in `<main>'

У меня такое чувство, что я упускаю какую-то мелочь (я новичок в appium), я просто не вижу ошибки, которую делаю здесь. Так что, если кто-то может указать мне правильное направление, это будет действительно полезно. Например, прокрутка также ничего не сделала для меня (просто вернул nil) https://appium.readthedocs.io/en/stable/en/writing-running-appium/touch-actions/

Я также пробовал некоторые другие команды, которые я нашел здесь: https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/appium-bindings.md

Например, driver.lock (в моем случае browser.lock) работал, поэтому я могу взаимодействовать с телефонными командами. Просто похоже, что я ничего не могу сделать с веб-сайтом, кроме поиска элементов, .get и .click (мне также не удалось прокрутить до элемента или прокрутить вниз).

Я даже пробовал это на веб-сайте https://hammerjs.github.io, чтобы убедиться, что есть элемент, который Предполагается, что вкладка реагирует на события касания (идентификатор области обращения), результат тот же.


person Mark Duivesteijn    schedule 11.08.2017    source источник
comment
Я заметил, что когда я использовал gem appium_lib версии 8.0.3, я больше не получал ошибку, но я все еще не мог пролистывать, вкладку (ничего не произошло). Так что я все еще что-то упускаю в моей конфигурации, я думаю. Любая помощь будет оценена.   -  person Mark Duivesteijn    schedule 14.08.2017
comment
Touch_action, скорее всего, не работает с более новой версией selenium-webdriver (executeScript v / s execute_script). Я связался с разработчиком гема touch_action, и он попросил меня использовать более раннюю версию selenium-webdriver. Что я пробовал, но результат такой же, как упоминалось в моем предыдущем комментарии. Никакой ошибки не появляется, но и тап / свайп не вижу. Вот ссылка на записанный мной пример 1drv.ms/v/s!AiGFi7A5PO9Uhacq5   -  person Mark Duivesteijn    schedule 15.08.2017


Ответы (1)


Так что, возможно, мой первоначальный вопрос был не совсем ясным, но я действительно понятия не имел, что я точно искал (не так много примеров о ruby ​​+ appium + touch action в сочетании с тестами на Android + Chrome)

Итак, я попробовал рубиновый драгоценный камень touch_action. К сожалению, это было не то, что я искал. Возможно, я делаю что-то в корне не так, но я не мог заставить его работать с последними версиями watir и selenium-webdriver.

Затем я попробовал appium_lib, который немного встревожил меня, так как я видел так много примеров (даже несколько хороших рубиновых), но снова я сделал то же самое, и это, похоже, не сработало на моей машине. Проблема с моей настройкой заключалась в том, что драйвер находился в контексте CHROMIUM, а Appium :: TouchAction .perform может выполняться только в контексте NATIVE_APP. https://discuss.appium.io/t/ruby-appium-touchaction-perform-returns-error-method-has-not-yet-been-implemented/18308 Так что имейте это в виду при использовании appium / android, и вы хотите использовать события TouchAction.

person Mark Duivesteijn    schedule 23.08.2017