ruby appium 驱动程序点击手势不起作用
ruby appium driver tap gesture does not work
设置
- 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 独立服务器 v3.4.0
- appium-desktop-Setup-1.1.0-beta.4
- Nexus 5 phone 通过 USB 连接到 PC Appium 服务器注册为 selenium-grid 节点的节点(一切正常)
想要action/step执行
- 我想点击一个元素(而不是点击)
- 同时使用 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 的新手),我只是没有看到我在这里犯的错误。
因此,如果有人能指出我正确的方向,那将非常有帮助。
例如滚动也没有为我做任何事情(只是返回零)
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 事件时请记住这一点。
设置
- 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 独立服务器 v3.4.0
- appium-desktop-Setup-1.1.0-beta.4
- Nexus 5 phone 通过 USB 连接到 PC Appium 服务器注册为 selenium-grid 节点的节点(一切正常)
想要action/step执行
- 我想点击一个元素(而不是点击)
- 同时使用 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 的新手),我只是没有看到我在这里犯的错误。 因此,如果有人能指出我正确的方向,那将非常有帮助。 例如滚动也没有为我做任何事情(只是返回零) 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 事件时请记住这一点。