Module: Appium::Core::Device
- Extended by:
- Forwardable
- Defined in:
- lib/appium_lib_core/common/device.rb
Class Method Summary collapse
- .add_endpoint_method(method) ⇒ Object
- .add_handling_context ⇒ Object
- .add_ime_actions ⇒ Object
- .add_keyevent ⇒ Object
- .add_touch_actions ⇒ Object
- .create_bridge_command(method) ⇒ Object
- .delegate_driver_method(method) ⇒ Object
- .delegate_from_appium_driver(method, delegation_target = :driver) ⇒ Object
- .extend_webdriver_with_forwardable ⇒ Object
- .extended(_mod) ⇒ Object
Instance Method Summary collapse
-
#app_installed?(app_id) ⇒ bool
Check whether the specified app is installed on the device.
-
#app_strings(language = nil) ⇒ Hash
Return the hash of all localization strings.
-
#available_contexts ⇒ Array<String>
All usable contexts, as an array of strings.
-
#background_app(duration = 0) ⇒ String
Backgrounds the app for a set number of seconds.
-
#close_app ⇒ Object
Close an app on device.
-
#current_activity ⇒ String
Get current activity name.
-
#current_context ⇒ String
The context currently being used.
-
#current_package ⇒ String
Get current package name.
-
#device_locked? ⇒ Object
Check current device status is weather locked or not.
-
#device_time ⇒ Object
Get the time on the device.
-
#get_display_density ⇒ Integer
Get connected device’s density.
-
#get_network_connection ⇒ Object
Get the device network connection current status See set_network_connection method for return value.
-
#get_settings ⇒ Object
Get appium Settings for current test session.
-
#get_system_bars ⇒ String
Get system bar’s information.
-
#hide_keyboard(close_key = nil, strategy = nil) ⇒ Object
Hide the onscreen keyboard.
-
#ime_activate(ime_name) ⇒ Object
Android only.
-
#ime_activated ⇒ Object
Android only.
-
#ime_active_engine ⇒ Object
Android only.
-
#ime_available_engines ⇒ Object
Android only.
-
#ime_deactivate ⇒ Object
Android only.
-
#install_app(path) ⇒ Object
Install the given app onto the device.
-
#is_keyboard_shown ⇒ Bool
Get whether keyboard is displayed or not.
-
#keyevent(key, metastate = nil) ⇒ Object
Send keyevent on the device.(Only for Selendroid) developer.android.com/reference/android/view/KeyEvent.html.
-
#launch_app ⇒ Object
Start the simulator and application configured with desired capabilities.
-
#long_press_keycode(key, metastate = nil) ⇒ Object
Long press keycode on the device.
-
#open_notifications ⇒ Object
Open Android notifications.
-
#press_keycode(key, metastate = nil) ⇒ Object
Press keycode on the device.
-
#pull_file(path) ⇒ Object
Retrieve a file from the device.
-
#pull_folder(path) ⇒ Object
Retrieve a folder from the device.
-
#push_file(path, filedata) ⇒ Object
Place a file in a specific location on the device.
-
#remove_app(app_id) ⇒ Object
Install the given app onto the device.
-
#replace_value(element, *value) ⇒ Object
Replace the value to element directly.
-
#reset ⇒ Object
Reset the device, relaunching the application.
-
#set_context(context) ⇒ Object
Change the context to the given context.
-
#set_immediate_value(element, *value) ⇒ Object
Set the value to element directly.
-
#shake ⇒ Object
Cause the device to shake.
-
#take_element_screenshot(element, png_path) ⇒ File
Path to the screenshot.
-
#toggle_flight_mode ⇒ Object
Toggle flight mode on or off.
-
#unlock ⇒ Object
Unlock the device.
-
#update_settings(settings) ⇒ Object
Update Appium Settings for current test session.
Class Method Details
.add_endpoint_method(method) ⇒ Object
536 537 538 539 540 541 |
# File 'lib/appium_lib_core/common/device.rb', line 536 def add_endpoint_method(method) block_given? ? create_bridge_command(method, &Proc.new) : create_bridge_command(method) delegate_driver_method method delegate_from_appium_driver method end |
.add_handling_context ⇒ Object
650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 |
# File 'lib/appium_lib_core/common/device.rb', line 650 def add_handling_context add_endpoint_method(:within_context) do def within_context(context) existing_context = current_context set_context context if block_given? result = yield set_context existing_context result else set_context existing_context end end end add_endpoint_method(:switch_to_default_context) do def switch_to_default_context set_context nil end end end |
.add_ime_actions ⇒ Object
614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 |
# File 'lib/appium_lib_core/common/device.rb', line 614 def add_ime_actions add_endpoint_method(:ime_activate) do def ime_activate(ime_name) # from Selenium::WebDriver::Remote::OSS execute :ime_activate_engine, {}, engine: ime_name end end add_endpoint_method(:ime_available_engines) do def ime_available_engines execute :ime_get_available_engines end end add_endpoint_method(:ime_active_engine) do # from Selenium::WebDriver::Remote::OSS def ime_active_engine execute :ime_get_active_engine end end add_endpoint_method(:ime_activated) do # from Selenium::WebDriver::Remote::OSS def ime_activated execute :ime_is_activated end end add_endpoint_method(:ime_deactivate) do # from Selenium::WebDriver::Remote::OSS def ime_deactivate execute :ime_deactivate, {} end end end |
.add_keyevent ⇒ Object
572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 |
# File 'lib/appium_lib_core/common/device.rb', line 572 def add_keyevent # Only for Selendroid add_endpoint_method(:keyevent) do def keyevent(key, = nil) args = { keycode: key } args[:metastate] = if execute :keyevent, {}, args end end add_endpoint_method(:press_keycode) do def press_keycode(key, = nil) args = { keycode: key } args[:metastate] = if execute :press_keycode, {}, args end end add_endpoint_method(:long_press_keycode) do def long_press_keycode(key, = nil) args = { keycode: key } args[:metastate] = if execute :long_press_keycode, {}, args end end end |
.add_touch_actions ⇒ Object
599 600 601 602 603 604 605 606 607 608 609 610 611 612 |
# File 'lib/appium_lib_core/common/device.rb', line 599 def add_touch_actions add_endpoint_method(:touch_actions) do def touch_actions(actions) actions = { actions: [actions].flatten } execute :touch_actions, {}, actions end end add_endpoint_method(:multi_touch) do def multi_touch(actions) execute :multi_touch, {}, actions: actions end end end |
.create_bridge_command(method) ⇒ Object
563 564 565 566 567 568 569 570 |
# File 'lib/appium_lib_core/common/device.rb', line 563 def create_bridge_command(method) ::Appium::Core::Base::CoreBridgeMJSONWP.class_eval do block_given? ? class_eval(&Proc.new) : define_method(method) { execute method } end ::Appium::Core::Base::CoreBridgeW3C.class_eval do block_given? ? class_eval(&Proc.new) : define_method(method) { execute method } end end |
.delegate_driver_method(method) ⇒ Object
552 553 554 555 |
# File 'lib/appium_lib_core/common/device.rb', line 552 def delegate_driver_method(method) return if ::Appium::Core::Base::Driver.method_defined? method ::Appium::Core::Base::Driver.class_eval { def_delegator :@bridge, method } end |
.delegate_from_appium_driver(method, delegation_target = :driver) ⇒ Object
558 559 560 |
# File 'lib/appium_lib_core/common/device.rb', line 558 def delegate_from_appium_driver(method, delegation_target = :driver) def_delegator delegation_target, method end |
.extend_webdriver_with_forwardable ⇒ Object
544 545 546 547 548 549 |
# File 'lib/appium_lib_core/common/device.rb', line 544 def extend_webdriver_with_forwardable return if ::Appium::Core::Base::Driver.is_a? Forwardable ::Appium::Core::Base::Driver.class_eval do extend Forwardable end end |
.extended(_mod) ⇒ Object
393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 |
# File 'lib/appium_lib_core/common/device.rb', line 393 def extended(_mod) extend_webdriver_with_forwardable ::Appium::Core::Commands::COMMAND_NO_ARG.each_key do |method| add_endpoint_method method end # Don't define selenium-side methods. We pick up from them. # ::Appium::Core::Base::Commands::MJSONWP.each_key do |method| # add_endpoint_method method # end add_endpoint_method(:available_contexts) do def available_contexts # return empty array instead of nil on failure execute(:available_contexts, {}) || [] end end add_endpoint_method(:app_strings) do def app_strings(language = nil) opts = language ? { language: language } : {} execute :app_strings, {}, opts end end add_endpoint_method(:lock) do def lock(duration = nil) opts = duration ? { seconds: duration } : {} execute :lock, {}, opts end end add_endpoint_method(:install_app) do def install_app(path) execute :install_app, {}, appPath: path end end add_endpoint_method(:remove_app) do def remove_app(id) execute :remove_app, {}, appId: id end end add_endpoint_method(:app_installed?) do def app_installed?(app_id) execute :app_installed?, {}, bundleId: app_id end end add_endpoint_method(:background_app) do def background_app(duration = 0) execute :background_app, {}, seconds: duration end end add_endpoint_method(:set_context) do def set_context(context = null) execute :set_context, {}, name: context end end add_endpoint_method(:hide_keyboard) do def hide_keyboard(close_key = nil, strategy = nil) option = {} option[:key] = close_key || 'Done' # default to Done key. option[:strategy] = strategy || :pressKey # default to pressKey execute :hide_keyboard, {}, option end end add_endpoint_method(:take_element_screenshot) do def take_element_screenshot(element, png_path) result = execute :take_element_screenshot, id: element.ref extension = File.extname(png_path).downcase if extension != '.png' WebDriver.logger.warn 'name used for saved screenshot does not match file type. '\ 'It should end with .png extension' end File.open(png_path, 'wb') { |f| f << result.unpack('m')[0] } end end add_endpoint_method(:set_immediate_value) do def set_immediate_value(element, *value) keys = ::Selenium::WebDriver::Keys.encode(value) execute :set_immediate_value, { id: element.ref }, value: Array(keys) end end add_endpoint_method(:replace_value) do def replace_value(element, *value) keys = ::Selenium::WebDriver::Keys.encode(value) execute :replace_value, { id: element.ref }, value: Array(keys) end end add_endpoint_method(:push_file) do def push_file(path, filedata) encoded_data = Base64.encode64 filedata execute :push_file, {}, path: path, data: encoded_data end end add_endpoint_method(:pull_file) do def pull_file(path) data = execute :pull_file, {}, path: path Base64.decode64 data end end add_endpoint_method(:pull_folder) do def pull_folder(path) data = execute :pull_folder, {}, path: path Base64.decode64 data end end add_endpoint_method(:get_settings) do def get_settings execute :get_settings, {} end end add_endpoint_method(:update_settings) do def update_settings(settings) execute :update_settings, {}, settings: settings end end add_keyevent add_touch_actions add_ime_actions add_handling_context end |
Instance Method Details
#app_installed?(app_id) ⇒ bool
Check whether the specified app is installed on the device
|
|
# File 'lib/appium_lib_core/common/device.rb', line 153
|
#app_strings(language = nil) ⇒ Hash
Return the hash of all localization strings.
|
|
# File 'lib/appium_lib_core/common/device.rb', line 162
|
#available_contexts ⇒ Array<String>
Returns All usable contexts, as an array of strings.
|
|
# File 'lib/appium_lib_core/common/device.rb', line 353
|
#background_app(duration = 0) ⇒ String
Backgrounds the app for a set number of seconds. This is a blocking application
|
|
# File 'lib/appium_lib_core/common/device.rb', line 171
|
#close_app ⇒ Object
Close an app on device
|
|
# File 'lib/appium_lib_core/common/device.rb', line 64
|
#current_activity ⇒ String
Get current activity name
|
|
# File 'lib/appium_lib_core/common/device.rb', line 12
|
#current_context ⇒ String
Returns The context currently being used.
|
|
# File 'lib/appium_lib_core/common/device.rb', line 345
|
#current_package ⇒ String
Get current package name
|
|
# File 'lib/appium_lib_core/common/device.rb', line 21
|
#device_locked? ⇒ Object
Check current device status is weather locked or not
|
|
# File 'lib/appium_lib_core/common/device.rb', line 104
|
#device_time ⇒ Object
Get the time on the device
|
|
# File 'lib/appium_lib_core/common/device.rb', line 124
|
#get_display_density ⇒ Integer
Get connected device’s density.
|
|
# File 'lib/appium_lib_core/common/device.rb', line 39
|
#get_network_connection ⇒ Object
Get the device network connection current status See set_network_connection method for return value
|
|
# File 'lib/appium_lib_core/common/device.rb', line 112
|
#get_settings ⇒ Object
Get appium Settings for current test session
|
|
# File 'lib/appium_lib_core/common/device.rb', line 262
|
#get_system_bars ⇒ String
Get system bar’s information
|
|
# File 'lib/appium_lib_core/common/device.rb', line 30
|
#hide_keyboard(close_key = nil, strategy = nil) ⇒ Object
Hide the onscreen keyboard
|
|
# File 'lib/appium_lib_core/common/device.rb', line 184
|
#ime_activate(ime_name) ⇒ Object
Android only. Make an engine that is available active.
|
|
# File 'lib/appium_lib_core/common/device.rb', line 295
|
#ime_activated ⇒ Object
Android only. Indicates whether IME input is active at the moment (not if it is available).
|
|
# File 'lib/appium_lib_core/common/device.rb', line 320
|
#ime_active_engine ⇒ Object
Android only. Get the name of the active IME engine.
|
|
# File 'lib/appium_lib_core/common/device.rb', line 312
|
#ime_available_engines ⇒ Object
Android only. List all available input engines on the machine.
|
|
# File 'lib/appium_lib_core/common/device.rb', line 304
|
#ime_deactivate ⇒ Object
Android only. De-activates the currently-active IME engine.
|
|
# File 'lib/appium_lib_core/common/device.rb', line 328
|
#install_app(path) ⇒ Object
Install the given app onto the device
|
|
# File 'lib/appium_lib_core/common/device.rb', line 137
|
#is_keyboard_shown ⇒ Bool
Get whether keyboard is displayed or not.
|
|
# File 'lib/appium_lib_core/common/device.rb', line 48
|
#keyevent(key, metastate = nil) ⇒ Object
Send keyevent on the device.(Only for Selendroid) developer.android.com/reference/android/view/KeyEvent.html
|
|
# File 'lib/appium_lib_core/common/device.rb', line 199
|
#launch_app ⇒ Object
Start the simulator and application configured with desired capabilities
|
|
# File 'lib/appium_lib_core/common/device.rb', line 56
|
#long_press_keycode(key, metastate = nil) ⇒ Object
Long press keycode on the device. developer.android.com/reference/android/view/KeyEvent.html
|
|
# File 'lib/appium_lib_core/common/device.rb', line 221
|
#open_notifications ⇒ Object
Open Android notifications
|
|
# File 'lib/appium_lib_core/common/device.rb', line 116
|
#press_keycode(key, metastate = nil) ⇒ Object
Press keycode on the device. developer.android.com/reference/android/view/KeyEvent.html
|
|
# File 'lib/appium_lib_core/common/device.rb', line 210
|
#pull_file(path) ⇒ Object
Retrieve a file from the device. This can retrieve an absolute path or a path relative to the installed app (iOS only).
|
|
# File 'lib/appium_lib_core/common/device.rb', line 242
|
#pull_folder(path) ⇒ Object
Retrieve a folder from the device.
|
|
# File 'lib/appium_lib_core/common/device.rb', line 253
|
#push_file(path, filedata) ⇒ Object
Place a file in a specific location on the device.
|
|
# File 'lib/appium_lib_core/common/device.rb', line 232
|
#remove_app(app_id) ⇒ Object
Install the given app onto the device
|
|
# File 'lib/appium_lib_core/common/device.rb', line 145
|
#replace_value(element, *value) ⇒ Object
Replace the value to element directly
|
|
# File 'lib/appium_lib_core/common/device.rb', line 287
|
#reset ⇒ Object
Reset the device, relaunching the application.
|
|
# File 'lib/appium_lib_core/common/device.rb', line 72
|
#set_context(context) ⇒ Object
Change the context to the given context.
|
|
# File 'lib/appium_lib_core/common/device.rb', line 336
|
#set_immediate_value(element, *value) ⇒ Object
Set the value to element directly
|
|
# File 'lib/appium_lib_core/common/device.rb', line 279
|
#shake ⇒ Object
Cause the device to shake
|
|
# File 'lib/appium_lib_core/common/device.rb', line 80
|
#take_element_screenshot(element, png_path) ⇒ File
Returns Path to the screenshot.
|
|
# File 'lib/appium_lib_core/common/device.rb', line 378
|
#toggle_flight_mode ⇒ Object
Toggle flight mode on or off
|
|
# File 'lib/appium_lib_core/common/device.rb', line 88
|
#unlock ⇒ Object
Unlock the device
|
|
# File 'lib/appium_lib_core/common/device.rb', line 96
|
#update_settings(settings) ⇒ Object
Update Appium Settings for current test session
|
|
# File 'lib/appium_lib_core/common/device.rb', line 270
|