I’m quiet new to Appium so maybe this is really simple to answer, but I just don’t know what to do next.
Setup:
Appium server 1.6.5
Ruby 2.3.3 (32 bit)
Android Phone (Nexus 5) connected via usb
gems:
- appium_lib 9.5.0 & 9.6.0
- selenium-webdriver 3.5.1
Script
require 'appium_lib'
capabilities = {
deviceName: 'Nexus5',
browserName: 'chrome',
platformName: :android,
newCommandTimeout: 15000,
}
appium = Appium::Driver.new(caps: capabilities)
driver = appium.start_driver
driver.get("https://www.google.nl")
Action I want to perform
Now I want to tap/press on any location on the screen (preferably on a certain element, but let’s take smaller steps)
I tried, but I get the error
irb(main):014:0> appium.tap(x:900, y:670).perform
ArgumentError: wrong number of arguments (given 1, expected 0)
from (irb):14:in `tap'
from (irb):14
from C:/Ruby23/bin/irb.cmd:19:in `<main>'
irb(main):015:0> action = Appium::TouchAction.new
=> #<Appium::TouchAction:0x3426528 @actions=[]>
irb(main):016:0> action.tap(x:900, y:670).perform
Selenium::WebDriver::Error::UnknownError: Method has not yet been implemented
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.5.1/lib/selenium/webdriver/remote/response.rb:69:in `assert_ok'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.5.1/lib/selenium/webdriver/remote/response.rb:32:in `initialize'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.5.1/lib/selenium/webdriver/remote/http/common.rb:83:in `new'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.5.1/lib/selenium/webdriver/remote/http/common.rb:83:in `create_response'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.5.1/lib/selenium/webdriver/remote/http/default.rb:107:in `request'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.5.1/lib/selenium/webdriver/remote/http/common.rb:61:in `call'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.5.1/lib/selenium/webdriver/remote/bridge.rb:170:in `execute'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.5.1/lib/selenium/webdriver/remote/oss/bridge.rb:579:in `execute'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/appium_lib-9.5.0/lib/appium_lib/device/device.rb:488:in `touch_actions'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/appium_lib-9.5.0/lib/appium_lib/device/touch_actions.rb:180:in `perform'
from (irb):16
from C:/Ruby23/bin/irb.cmd:19:in `<main>'
irb(main):017:0> tap = action.tap(x:900, y:670)
=> #<Appium::TouchAction:0x3426528 @actions=[{:action=>:tap, :options=>{:x=>900, :y=>670, :count=>1}}, {:action=>:tap, :options=>{:x=>900, :y=>670, :count=>1}}]>
irb(main):018:0> tap.perform
Selenium::WebDriver::Error::UnknownError: Method has not yet been implemented
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.5.1/lib/selenium/webdriver/remote/response.rb:69:in `assert_ok'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.5.1/lib/selenium/webdriver/remote/response.rb:32:in `initialize'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.5.1/lib/selenium/webdriver/remote/http/common.rb:83:in `new'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.5.1/lib/selenium/webdriver/remote/http/common.rb:83:in `create_response'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.5.1/lib/selenium/webdriver/remote/http/default.rb:107:in `request'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.5.1/lib/selenium/webdriver/remote/http/common.rb:61:in `call'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.5.1/lib/selenium/webdriver/remote/bridge.rb:170:in `execute'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/selenium-webdriver-3.5.1/lib/selenium/webdriver/remote/oss/bridge.rb:579:in `execute'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/appium_lib-9.5.0/lib/appium_lib/device/device.rb:488:in `touch_actions'
from C:/Ruby23/lib/ruby/gems/2.3.0/gems/appium_lib-9.5.0/lib/appium_lib/device/touch_actions.rb:180:in `perform'
from (irb):18
from C:/Ruby2
I did read about similar issues, like TouchAction().perform() - Method has not yet been implemented
But that did not give me enough information to understand what I’m doing wrong. It must be something small since I see examples that work. If someone could point me to information to understand the issue that would also be helpful.