Skip to content

Commit f6a3f7f

Browse files
authored
add webatom example (#192)
1 parent 3cd8585 commit f6a3f7f

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

test/functional/android/android/mobile_commands_test.rb

+46
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,52 @@ def test_backdoor
129129
'No public method noMethod definded on class io.appium.android.apis.view.TextSwitcher1'
130130
end
131131

132+
# @since Appium 1.12.0 (Espresso driver 1.8.0~)
133+
def test_webatom
134+
skip unless @core.automation_name == :espresso
135+
136+
caps = Caps.android 'io.appium.android.apis.view.WebView1'
137+
@core = ::Appium::Core.for(caps)
138+
@driver = @core.start_driver
139+
140+
el = @driver.find_element :id, 'wv1'
141+
142+
@driver.execute_script 'mobile: webAtoms', {
143+
webviewElement: el.ref,
144+
forceJavascriptEnabled: true,
145+
methodChain: [
146+
{ name: 'withElement', atom: { name: 'findElement', locator: { using: 'ID', value: 'i_am_a_textbox' } } },
147+
{ name: 'perform', atom: { name: 'webKeys', args: 'Hello world' } },
148+
{ name: 'withElement', atom: { name: 'findElement', locator: { using: 'ID', value: 'i am a link' } } },
149+
{ name: 'perform', atom: 'webClick' }
150+
]
151+
}
152+
153+
# Can use `atom` defined in https://developer.android.com/reference/android/support/test/espresso/web/webdriver/DriverAtoms
154+
# Locator: https://developer.android.com/reference/androidx/test/espresso/web/webdriver/Locator
155+
@driver.execute_script 'mobile: webAtoms', {
156+
webviewElement: el.ref,
157+
forceJavascriptEnabled: true,
158+
methodChain: [{
159+
name: 'withElement',
160+
atom: { name: 'findElement', locator: { using: 'XPATH', value: '/html/body' } }
161+
}]
162+
}
163+
164+
# Raises an error if the method cannot find any DriverAtoms or necessary arguments
165+
error = assert_raises ::Selenium::WebDriver::Error::WebDriverError do
166+
@driver.execute_script 'mobile: webAtoms', {
167+
webviewElement: el.ref,
168+
forceJavascriptEnabled: true,
169+
methodChain: [{
170+
name: 'withElement',
171+
atom: { name: 'findElement', locator: { using: 'ERROR', value: '/html/body' } }
172+
}]
173+
}
174+
end
175+
assert error.message.include? "Cannot execute method on 'androidx.test.espresso.web.webdriver.DriverAtoms'."
176+
end
177+
132178
private
133179

134180
def assert_mobile_command_error(command, args, expected_message)

0 commit comments

Comments
 (0)