无法找出我的第一个 Appium ruby 测试中的错误

Can't figure out the errors in my first Appium ruby test

require 'rubygems'
require 'appium_lib'

desired_caps = {
    caps: {
        platformName:  'iOS',
        platformVersion: '11.4',
        deviceName:    'iPhone 7',
        app:           Path,
        automationName: 'XCUITest',
    },
    appium_lib: {
        sauce_username:   nil,
        sauce_access_key: nil,
        wait: 60
    }
}

driver = Appium::Driver.new(desired_caps)
Appium.promote_appium_methods AppiumWorld
driver.start_driver

#login test class

    #find the email textfield
    def email(driver)
        return driver.find_element(:name, "Email")
    end

    #find the password textfield
    def password(driver)
        return driver.find_element(:name, "Password")
    end

    #find the login button
    def loginButton(driver)
        return driver.find_element(:name, "Login")
    end

    #find Forgot Password button
    def forgotPasswordButton(driver)
        return driver.find_element(:name, "Forgot Password?")
    end

    #find Don't have an account button
    def forgotAccountButton(driver)
        return driver.find_element(:name, "Don't have an account?")
    end

$driver.driver_quit

我没有包含路径,但它是正确的。我已经安装了所有需要的 gem,ruby 到 运行 appium ruby 测试的唯一依赖项是我安装的 appium_lib。我只想确保我有 2 个必需的电子邮件和密码文本字段和 3 个按钮,包括登录、忘记密码和没有帐户按钮。这是我收到的错误,我似乎找不到解决此错误的方法:

Traceback (most recent call last):
    2: from loginScreenTest.rb:2:in `<main>'
    1: from /usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
/usr/local/Cellar/ruby/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require': cannot load such file -- appium_lib (LoadError

)

此测试的目的是检查视图控制器上是否存在所有 UI 元素。为了找到那些 "elements",需要使用名称、ID 甚至 xpath 来引用这些元素(不推荐这样做,因为它会根据 Appium 模拟器所说的而不是我的话创建不稳定的测试).我的代码特别存在的问题是,首先我需要安装 gem,所以我 运行 该代码,但最终有效的代码如下。

require 'rubygems'
require 'appium_lib'

desired_caps = {
    caps: {
        platformName:  'iOS',
        platformVersion: '11.4',
        deviceName:    'iPhone 7',
        app:           PATH,
        automationName: 'XCUITest',
    },
    appium_lib: {
        sauce_username:   nil,
        sauce_access_key: nil,
        wait: 60
    }
}

@driver = Appium::Driver.new(desired_caps,)

@driver.start_driver

#login test class

    #find the email textfield
    def email(driver)
        if driver.find_element(:xpath, '//XCUIElementTypeApplication[@name="DataSiteOne"]/XCUIElementTypeWindow[1]/XCUIElementTypeOther[2]/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeTextField')
            return driver.find_element(:xpath, '//XCUIElementTypeApplication[@name="DataSiteOne"]/XCUIElementTypeWindow[1]/XCUIElementTypeOther[2]/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeTextField')
        end
    end

    #find the password textfield
    def password(driver)
        if driver.find_element(:xpath, '//XCUIElementTypeApplication[@name="DataSiteOne"]/XCUIElementTypeWindow[1]/XCUIElementTypeOther[2]/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeSecureTextField')
            return driver.find_element(:xpath, '//XCUIElementTypeApplication[@name="DataSiteOne"]/XCUIElementTypeWindow[1]/XCUIElementTypeOther[2]/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeSecureTextField')
        end
    end

    #find the login button
    def loginButton(driver)
       if driver.find_element(:name, "Login")
           return driver.find_element(:name, "Login")
        end
    end

    #find Forgot Password button
    def forgotPasswordButton(driver)
        if driver.find_element(:name, "Forgot your password?")
            return driver.find_element(:name, "Forgot your password?")
        end
    end

    #find Don't have an account button
    def forgotAccountButton(driver)
        if driver.find_element(:name, "Don't have an account?")
            return driver.find_element(:name, "Don't have an account?")
        end
    end

    #remember me button
    def rememberMeButton(driver)
        if driver.find_element(:name, "Remember me")
            return driver.find_element(:name, "Remember me")
        end
    end

    #toggle
    def toggle(driver)
        if driver.find_element(:xpath, '//XCUIElementTypeApplication[@name="DataSiteOne"]/XCUIElementTypeWindow[1]/XCUIElementTypeOther[2]/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther[1]/XCUIElementTypeSwitch')
            return driver.find_element(:xpath, '//XCUIElementTypeApplication[@name="DataSiteOne"]/XCUIElementTypeWindow[1]/XCUIElementTypeOther[2]/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther[1]/XCUIElementTypeSwitch')
        end
    end


    email(@driver)
    password(@driver)
    loginButton(@driver)
    forgotPasswordButton(@driver)
    forgotAccountButton(@driver)
    rememberMeButton(@driver)
    toggle(@driver)

@driver.driver_quit