I’m looking for an example of how to find an element by resource id using Ruby. The examples I’ve found in Java use selenium-webdriver’s By method, but I cannot find sufficient documentation on how to use By in Ruby. Does anyone have a pointer to such an example?
Thanks for the response, Bootstrap. I got it working. I used find_element(:id, resource_id)
When I tried to use id(resource_id), it produce an error. I’m using head of line appium, 8fdcf83
id is just an alias for find_element :id. What error did it generate?
Thank you for the pointer, @bootstrap! Once you locate an element, what sort of actions can you do on them? I will try it out. Are all the methods available for capybara available for appium_capybara? It would be great if you add some more specs for QA folks. Thanks, for the quick response!
Andrew
Reading the source code is the best way to understand what you can do. I don’t use appium anymore. If you send pull requests I’m sure the other devs will appreciate it.
Yeah, okay! I will give it a try, but my ruby is not that great. I just know basic ruby scripting and google the syntax I need.
BTW, I was able to do this for android:
element :login_button, :id, 'welcome_login_button'
def click_login_button
login_button.click
end
And in my spec:
require_relative '../../spec_helper_test'
require './pages/landing_page'
describe 'Android Test' do
before(:each) do
@landing_page = Pages::LandingPage.new
end
it 'should be able to go to login page' do
@landing_page.click_login_button
end
end
You can use xpath method, like this:
element = xpath("//android.widget.TextView[contains(@resource-id,‘text_view_bla’)]")
Or
element = xpath("//android.widget.TextView[starts-with(@resource-id,’'package:id/text_view_bla)]")
Or
element = find_elements(:xpath, “//android.widget.TextView[starts-with(@resource-id,’'package:id/text_view_bla)]”)