ruby appium 驱动程序点击手势不起作用

ruby appium driver tap gesture does not work

设置

想要action/step执行

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 的新手),我只是没有看到我在这里犯的错误。 因此,如果有人能指出我正确的方向,那将非常有帮助。 例如滚动也没有为我做任何事情(只是返回零) 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),工作正常所以我可以与 phone 命令交互。看起来除了查找元素、.get 和 .click 之外,我无法对网站做任何事情(我也无法滚动到某个元素或向下滚动)。

我什至在 https://hammerjs.github.io 网站上尝试过此操作,以确保选项卡中有一个元素应该响应触摸事件(id hitarea),结果相同。

所以也许我最初的问题不是很清楚,但我真的不知道我在寻找什么(关于 ruby + appium + touch 动作结合测试的例子不多

=22=] + Chrome)

所以我尝试了 touch_action ruby gem。不幸的是,这不是我想要的。也许我做错了一些基本错误,但我无法让它与最新的 watir 和 selenium-webdriver 一起工作。

然后我尝试了 appium_lib 这让我有点头疼,因为我看到了太多的例子(甚至是一些很好的 ruby ),但是我又做了完全一样的事情,但没有似乎在我的机器上工作。我的设置的问题是驱动程序在 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 事件时请记住这一点。