mirror of
https://github.com/appium/appium.git
synced 2026-01-14 06:10:01 -06:00
105 lines
3.1 KiB
Ruby
105 lines
3.1 KiB
Ruby
# GETTING STARTED
|
|
# -----------------
|
|
# This documentation is intended to show you how to get started with a
|
|
# simple Appium & appium_lib test. This example is written without a specific
|
|
# testing framework in mind; You can use appium_lib on any framework you like.
|
|
#
|
|
# INSTALLING RVM
|
|
# --------------
|
|
# We're assuming you've got rvm installed, but if not, from a terminal
|
|
# run the following line (removing the ""'s):
|
|
#
|
|
# "\curl -L https://get.rvm.io | bash -s stable --ruby"
|
|
#
|
|
# INSTALLING GEMS
|
|
# ---------------
|
|
# Then, change to the example directory:
|
|
# "cd appium-location/sample-code/examples/ruby"
|
|
#
|
|
# and install the required gems with bundler by doing:
|
|
# "bundle install"
|
|
#
|
|
# RUNNING THE TESTS
|
|
# -----------------
|
|
# To actually run the tests, make sure appium is running in another terminal
|
|
# window, then from the same window you used for the above commands, type
|
|
# "ruby simple_test.rb"
|
|
#
|
|
# It will take a while, but once it's done you should get nothing but a line
|
|
# telling you "Tests Succeeded"; You'll see the iOS Simulator cranking away
|
|
# doing actions while we're running.
|
|
require 'appium_lib'
|
|
|
|
APP_PATH = '../../apps/TestApp/build/release-iphonesimulator/TestApp.app'
|
|
|
|
def absolute_app_path
|
|
file = File.join(File.dirname(__FILE__), APP_PATH)
|
|
raise "App doesn't exist #{file}" unless File.exist? file
|
|
file
|
|
end
|
|
|
|
desired_caps = {
|
|
'platformName' => 'ios',
|
|
'versionNumber' => '7.1',
|
|
'app' => absolute_app_path
|
|
}
|
|
|
|
# Start the driver, then add all the Appium library methods to object to make
|
|
# calling them look nicer. You should probably do this on your test class,
|
|
# not on Object.
|
|
Appium::Driver.new(caps: desired_caps).start_driver
|
|
Appium.promote_appium_methods Object
|
|
|
|
|
|
# Add two numbers
|
|
values = [rand(10), rand(10)]
|
|
expected_sum = values.reduce(&:+)
|
|
|
|
# Find every textfield
|
|
elements = e_textfields
|
|
|
|
elements.each_with_index do |element, index|
|
|
element.type values[index]
|
|
end
|
|
|
|
# Get the first button
|
|
button = button(1)
|
|
button.click
|
|
|
|
# Get the first static text field, then get its text
|
|
actual_sum = first_s_text.text
|
|
raise Exception unless actual_sum == (expected_sum.to_s)
|
|
|
|
|
|
## Alerts are visible
|
|
button('show alert').click
|
|
alert = find_element :class_name, 'UIAAlert' # Elements can be found by :class_name
|
|
|
|
## Elements can be found by their Class and value of an attribute
|
|
cancel_button = find_ele_by_attr 'UIATableCell', :label, "Cancel"
|
|
cancel_button.click
|
|
|
|
# Waits until no exceptions are raised
|
|
wait(10) {
|
|
alerts = find_elements :class_name, 'UIAAlert'
|
|
raise Exception unless alerts.length == 0
|
|
}
|
|
|
|
|
|
## Alerts can be switched into
|
|
button('show alert').click # Get a button by its text
|
|
alert = driver.switch_to.alert # Get the text of the current alert, using
|
|
# the Selenium::WebDriver directly
|
|
alerting_text = alert.text
|
|
raise Exception unless alerting_text.include? "Cool title"
|
|
alert_accept # Accept the current alert
|
|
|
|
|
|
## Window Size is easy to get
|
|
sizes = window_size
|
|
raise Exception unless sizes.height == 568
|
|
raise Exception unless sizes.width == 320
|
|
|
|
# Quit when you're done!
|
|
driver_quit
|
|
puts "Tests Succeeded!" |