ruby appium驱动程序轻拍手势不起作用

时间:2017-08-11 13:50:54

标签: android ruby selenium appium gestures

设置

  • ruby​​ 2.3.3p222(2016-11-21修订版56859)[i386-mingw32]
  • appium_lib(9.4.9)
  • selenium-webdriver(3.4.0)
  • touch_action(1.3.3)
  • watir(6.3.0)
  • Selenium Standalone服务器v3.4.0
  • appium-桌面安装-1.1.0-beta.4
  • Nexus 5手机通过USB Appium服务器寄存器连接到PC,作为selenium-grid节点的节点(一切正常)

通缉行动/步骤

  • 我想点击一个元素(而不是点击)
  • 使用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网站上尝试了这一点,以确保有一个元素可以选择标签来响应触摸事件(id hitarea),结果相同。

1 个答案:

答案 0 :(得分:0)

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

所以我尝试了touch_action ruby​​ gem。不幸的是,这不是我想要的。也许我做了一些基本错误的事情,但我无法使用最新的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事件时请记住这一点。