Class: Selenium::WebDriver::Element

Inherits:
Object
  • Object
show all
Includes:
Appium::Core::Base::SearchContext
Defined in:
lib/appium_lib_core/patch.rb

Overview

Implement useful features for element. Patch for Selenium Webdriver.

Constant Summary

Constants included from Appium::Core::Base::SearchContext

Appium::Core::Base::SearchContext::FINDERS

Instance Method Summary collapse

Methods included from Appium::Core::Base::SearchContext

#find_element, #find_elements

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args, &block) ⇒ String

Returns the value of attributes like below. Read each platform to know more details.

uiautomator2: github.com/appium/appium-uiautomator2-server/blob/203cc7e57ce477f3cff5d95b135d1b3450a6033a/app/src/main/java/io/appium/uiautomator2/utils/Attribute.java#L19

checkable, checked, class, clickable, content-desc, enabled, focusable, focused
long-clickable, package, password, resource-id, scrollable, selection-start, selection-end
selected, text, bounds, index

XCUITest automation name supports below attributes.

UID, accessibilityContainer, accessible, enabled, frame,
label, name, rect, type, value, visible, wdAccessibilityContainer,
wdAccessible, wdEnabled, wdFrame, wdLabel, wdName, wdRect, wdType,
wdUID, wdValue, wdVisible

Examples:


e = @driver.find_element :accessibility_id, 'something'
e.value
e.resource_id # call `e.attribute "resource-id"`

Returns:

  • (String)

45
46
47
48
49
50
# File 'lib/appium_lib_core/patch.rb', line 45

def method_missing(method_name, *args, &block)
  ignore_list = [:to_hash]
  return if ignore_list.include? method_name

  respond_to?(method_name) ? attribute(method_name.to_s.tr('_', '-')) : super
end

Instance Method Details

#location_rel(driver) ⇒ ::Selenium::WebDriver::Point

For use with location_rel.

Examples:


e = @driver.find_element :accessibility_id, 'something'
e.location_rel @driver

Returns:

  • (::Selenium::WebDriver::Point)

    the relative x, y in a struct. ex: { x: 0.50, y: 0.20 }


68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/appium_lib_core/patch.rb', line 68

def location_rel(driver)
  rect = self.rect
  location_x = rect.x.to_f
  location_y = rect.y.to_f

  size_width  = rect.width.to_f
  size_height = rect.height.to_f

  center_x = location_x + (size_width / 2.0)
  center_y = location_y + (size_height / 2.0)

  w = driver.window_size
  ::Selenium::WebDriver::Point.new "#{center_x} / #{w.width.to_f}", "#{center_y} / #{w.height.to_f}"
end

#respond_to_missing?Boolean

Returns:

  • (Boolean)

52
53
54
# File 'lib/appium_lib_core/patch.rb', line 52

def respond_to_missing?(*)
  true
end