Целью этого теста было проверить, что все элементы пользовательского интерфейса присутствовали на контроллере представления.Чтобы найти эти «элементы», на эти элементы нужно ссылаться, используя имя, идентификатор или даже xpath (это не рекомендуется, потому что оно создает нестабильные тесты, основанные на том, что говорит симулятор Appium, а не на моих словах).В частности, проблема с моим кодом заключалась в том, что сначала мне нужно было установить гем, поэтому я запустил этот код, но в конечном итоге сработал следующий код.
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