当前位置: 首页 > 知识库问答 >
问题:

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

吴欣然
2023-03-14

安装程序

  • ruby 2.3.3p222(2016-11-21修订版56859)[i386-mingw32]

想要执行的动作/步骤

  • 我想对一个元素执行轻敲(而不是单击)
  • 同时使用selenium-webDrive版本

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),这样我就可以和电话命令交互了。看起来除了找到元素,我什么也做不了。获取和点击(我也不能滚动到元素或向下滚动)。

我甚至试过这个https://hammerjs.github.io网站,以确保有一个元素,标签被认为是响应触摸事件(id hitarea),相同的结果。

共有1个答案

宗啸
2023-03-14

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

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

然后我尝试了appium_lib这让我有点头疼,因为我看到了这么多的例子(甚至是一些好的红宝石),但是我又做了完全一样的事情,它似乎在我的机器上不起作用。我的设置的问题是驱动程序在CHROMIUM上下文中,Appium::TouchAction. show只能在NATIVE_APP上下文中完成。https://discuss.appium.io/t/ruby-appium-touchaction-perform-returns-error-method-has-not-yet-been-implemented/18308所以在使用appium/android驱动程序并且您想使用TouchAction事件时,请记住这一点。

 类似资料:
  • 问题内容: 我在正在翻译动画的UILabel上有一个轻击手势。动画期间,只要在标签上轻按,轻按手势就不会有响应。 这是我的代码: 手势代码: 有任何想法吗?谢谢 :) 问题答案: 使用Tapgesture后,您将无法完成自己的工作,原因有1个。手势与标签的框架相关联。开始动画时,标签的最后一帧立即更改,而您只是在观看假电影(动画)。如果您能够触摸屏幕上的(0,900),它将在发生动画时照常触发。不

  • 我还是Selenium测试世界的新手,目前正在使用SeleniumChromeWebDriver进行测试。 我想做的是在下面的弹出对话框中: < li >在文本输入框中输入一个数字 < li >单击应用按钮 < li >然后将触发web应用程序向服务器端发布信息。 这是我到目前为止发现的,如果我取消对<code>线程的注释。睡眠(500),一切都将完美工作。但是没有<code>线程。sleep(5

  • 问题内容: 我试图在我的Android应用程序中使用JDBC连接到远程数据库以执行插入,查询等操作。我已经成功连接并在另一个JAVA项目中完成了这些操作。因此,我认为由于Android是Java,因此我可以移植相关代码,为驱动程序添加相同的构建路径,等等。但这给了我错误: 我真的不认为这是代码问题,因为相同的代码可以在Java项目中工作(我只在main()中执行)。但这里供参考: //我创建的SQ

  • 这是一个非常简单的脚本,但我需要帮助。 当没有为键入的文本列出建议时,网络驱动程序会单击谷歌搜索按钮(例如 macintosh)。但是当建议出现时,我如何仍然让网络驱动程序点击谷歌搜索按钮。我的代码如下: } 但得到以下错误。请帮助 在端口3288上启动ChromeDriver 2.40.565498(ea082db3280dd6843ebfb08a625e3eb905c4f5ab)仅允许本地连接

  • 我们在payara 5.2020服务器上有一个J2EE应用程序,它执行一个长时间运行的查询(执行几个小时的PL/SQL)。为了避免超时异常,我们在语句级别使用以下语句: 这使用Oracle jdbc驱动程序版本12c工作,但是当我们迁移到Oracle 18c,并且我们将驱动程序更改为版本18c时,查询执行在15分钟后停止,但有此异常。这段代码适用于Oracle 12,Oracle 18是驱动程序j

  • UTCDateTime的var_dump显示有效值: 对象(MongoDB\bson\utcdatetime)#477(1){[“毫秒”]=> 字符串(10)“1515954053”} 预期返回的文档示例: UPDATE:删除发送到UTCDateTime对象的变量,如下所示: 作品(如上面所示,我在将来添加了一个记录)。问题是当我发送变量来指定我需要的时间戳时。