【问题标题】:Ruby + Appium - Locator Strategy 'name' is not supported for this sessionRuby + Appium - 此会话不支持定位器策略“名称”
【发布时间】:2017-05-03 20:07:58
【问题描述】:
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/response.rb:69:in `assert_ok': Locator Strategy 'name' is not supported for this session (Selenium::WebDriver::Error::InvalidSelectorError)
        from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/response.rb:32:in `initialize'
        from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/http/common.rb:83:in `new'
        from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/http/common.rb:83:in `create_response'
        from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/http/default.rb:107:in `request'
        from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/http/common.rb:61:in `call'
        from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/bridge.rb:678:in `raw_execute'
        from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/bridge.rb:656:in `execute'
        from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/bridge.rb:625:in `find_element_by'
        from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/appium_lib-9.4.3/lib/appium_lib/device/device.rb:440:in `find_element'
        from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/appium_lib-9.4.3/lib/appium_lib/driver.rb:739:in `find_element'
        from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/appium_lib-9.4.3/lib/appium_lib/driver.rb:242:in `rescue in block (4 levels) in promote_appium_methods'
        from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/appium_lib-9.4.3/lib/appium_lib/driver.rb:233:in `block (4 levels) in promote_appium_methods'
        from tindermation.rb:46:in `like_button'
        from tindermation.rb:75:in `<main>'
Looking for girls to match...

显然name 在 Appium 中已被弃用?什么是替代方案? Android 开发者选项中是否有一些设置会返回特定 UI 元素的 xpath、id、类名、可访问性 id 等?

或者,我正在使用开发人员选项单击某个坐标处的 UI 元素。例如:

def login_button
  sleep 1
  driver.execute_script 'mobile: tap', :x => 539, :y => 1464, :fingers => 1, :tapCount => 1, :duration => 0.5
  sleep 1
  driver.execute_script 'mobile: tap', :x => 871, :y => 1130, :fingers => 1, :tapCount => 1, :duration => 0.5
  sleep 1
end

但我得到了这个例外:

C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/selenium-webdriver-3.4.0/lib/selenium/webdriver/remote/response.rb:69:in `assert_ok': Method has not yet been implemented (Selenium::WebDriver::Error::UnknownError)

为什么我不能点击登录按钮?

【问题讨论】:

    标签: ruby session appium


    【解决方案1】:

    目前您需要使用 xpath 或 id。
    或者,如果你有名字,你可以使用 xpath as
    //*[@name='yourName']

    driver.find_element(xpath: "//*[@name='yourName']").click

    希望对你有帮助!!!

    【讨论】:

    • 是的,这行得通。困难的部分是让您的 APK 工作,以便您可以找到名称。或者Appium::TouchAction.new.tap( x: 880, y:1129, count: 3).release.perform 在所需的 X、Y 位置执行点击。
    • 很高兴它成功了,点击固定位置总是有风险的,因为每个设备都会有不同的分辨率,x,y 坐标也会随之改变。如果可能的话,最好尝试获取动态坐标,否则脏方法是唯一的方法。 :)
    【解决方案2】:

    您可以使用"Appium Inspector",Appium GUI 应用程序的内置工具或Android SDK 工具"uiautomatorviewer" 来查找应用程序的UI 组件的不同属性。

    【讨论】:

    • driver.execute_script 'mobile: tap', :x =&gt; 539, :y =&gt; 1464, :fingers =&gt; 1, :tapCount =&gt; 1, :duration =&gt; 0.5 这样的命令呢?正如我更新的帖子中所述,我也遇到了例外情况。项目位于:github.com/santafebound/tindermation
    • 您是在尝试自动化 Web App 还是 Native App?
    • 本机。没有 Tinder 网络应用程序
    猜你喜欢
    • 2019-07-18
    • 1970-01-01
    • 2019-02-08
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 2019-10-22
    • 1970-01-01
    相关资源
    最近更新 更多