Appium Ruby - 无法滚动到 Accessibility_ID

Posted

技术标签:

【中文标题】Appium Ruby - 无法滚动到 Accessibility_ID【英文标题】:Appium Ruby - Can't Scroll To Accessibility_ID 【发布时间】:2020-11-12 19:25:06 【问题描述】:

http://appium.io/docs/en/commands/interactions/touch/scroll/

我想滚动到一个元素。我不断收到错误消息。修复可能很简单,但我完全迷失了。

Error: "undefined method `scroll' for #<Appium::TouchAction:0x000055d15d31c980> (NoMethodError)"

我在:

Linux Mint Ruby 版本 2.5.1p57 touch_action gem (1.3.3) appium_lib gem (10.6.0) appium_lib_core gem (3.7.0)

下面是我的代码。

require 'appium_lib'
require 'touch_action'
#require 'selenium-webdriver'

server_url = "http://127.0.0.1:4723/wd/hub"

opts = 
         caps: 
           platformName: :android,
           platformVersion: 9,
           deviceName: :'Android Emulator',
           app: 'TheApp-v1.9.0.apk',
           newCommandTimeout: 600,
           automationName: :Appium,
           javascript_enabled: true
         
  


driver = Appium::Driver.new(opts, true)
driver.start_driver
ta = Appium::TouchAction.new.driver

sleep 5

scroll1 = ta.scroll_to(:accessibility_id, "Verify Phone Number")
scroll1.perform

sleep 2

print "Completed Successfully!"

driver.driver_quit

【问题讨论】:

【参考方案1】:

scroll_to 在 Ruby Appium 中一直很不稳定。我建议编写类似于以下内容的自己的逻辑:

ta = Appium::TouchAction.new.driver
swipeUp = ta.swipe(startX, startY, endX, endY, duration)
clicked = false

(0...times).each do
    swipeUp.perform
    unless verifyPhoneNumber.isDisplayed
        verifyPhoneNumber.click
        clicked = true
    end
    break if clicked == true
end

我的 Ruby 和 Appium 有点生疏了;如果上面有任何错误,我们深表歉意,但您应该明白要点。

为了可重用性,我可能会使用此逻辑创建一个函数,该函数返回您尝试滚动到的元素。

【讨论】:

我的结果是“nil:NilClass (NoMethodError) 的未定义方法 `swipe'” 那么你的库有问题。似乎无法创建正确的 TouchAction。我的代码不是独立的,而是要插入到您的框架中。

以上是关于Appium Ruby - 无法滚动到 Accessibility_ID的主要内容,如果未能解决你的问题,请参考以下文章

使用 Appium 和 Ruby 测试 iOS 应用程序时等待元素加载?

Ruby+appium实现截图滑屏长按日志输出到本地文件夹

使用 Appium、wd 和 React Native 滚动到一个元素

如何使用 TouchAction 滚动 Appium 1.7.1

我想在 Android、java 客户端 v-5.0.4 和 appium v​​-1.7.1 中使用 appium 向下滚动到特定元素

如何使用Java向下滚动到iOS中appium 1.6.4 beta中的确切元素