设置
通缉行动/步骤
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),结果相同。
答案 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事件时请记住这一点。