In this article we will see the functions used for getting a web element from a web application using Robotium while doing testing.
We need to initiate the Solo object. After initiation, we will uses solo to get those.
For Single web element :
Solo object have a function named solo.getWebElement(), where we use two parameter to get element. First parameter is for element finder(By object) and 2nd one is the index(nth found), So
-The function returns a web element
-We need to specify By object( the object finder)
-We need to specify index. (Zero based integer index and in here 0 means found 1)
-To select a web element by its class name(Actually it is the type name defines what type of web element that is, like button, text box etc)
solo.getWebElement(By.className("Textbox"),0);
-To select a web element by its css selector
solo.getWebElement(By.cssSelector("CSSAsString"),0);
-To select a web element by its ID
solo.getWebElement(By.id("idAsString"), 0);
-To select a web element by its Name
solo.getWebElement(By.name("NameAsString"), 0);
-To select a web element by itsTag Name
solo.getWebElement(By.tagName("tagNameAsString"), 0);
-To select a web element by its text content
solo.getWebElement(By.textContent("contentAsString"), 0);
-To select a web element by its Xpath
solo.getWebElement(By.xpath("xpathAsString"), 0);
For Multiple web element :
There are two function,
1. solo.getCurrentWebElements(By.[--by xpath or above items--])
This is just multiple version of previous single web element finding
2. solo.getCurrentWebElements();
For both cases they provide an array list of WebElements displayed in the active WebView.
Thanks..:)
We need to initiate the Solo object. After initiation, we will uses solo to get those.
For Single web element :
Solo object have a function named solo.getWebElement(), where we use two parameter to get element. First parameter is for element finder(By object) and 2nd one is the index(nth found), So
-The function returns a web element
-We need to specify By object( the object finder)
-We need to specify index. (Zero based integer index and in here 0 means found 1)
-To select a web element by its class name(Actually it is the type name defines what type of web element that is, like button, text box etc)
solo.getWebElement(By.className("Textbox"),0);
-To select a web element by its css selector
solo.getWebElement(By.cssSelector("CSSAsString"),0);
-To select a web element by its ID
solo.getWebElement(By.id("idAsString"), 0);
-To select a web element by its Name
solo.getWebElement(By.name("NameAsString"), 0);
-To select a web element by itsTag Name
solo.getWebElement(By.tagName("tagNameAsString"), 0);
-To select a web element by its text content
solo.getWebElement(By.textContent("contentAsString"), 0);
-To select a web element by its Xpath
solo.getWebElement(By.xpath("xpathAsString"), 0);
For Multiple web element :
There are two function,
1. solo.getCurrentWebElements(By.[--by xpath or above items--])
This is just multiple version of previous single web element finding
2. solo.getCurrentWebElements();
For both cases they provide an array list of WebElements displayed in the active WebView.
Thanks..:)
I am currently working on robotium. I have the apk of an hybrid application.
ReplyDeleteIs the any way i can identify the attributes of the web element(like name , css , id etc). Pls let me know if there is any way to do it...
Yes, you can. this post explains properly to use functions for ID/CSS/Name or Xpath. before that, use debug edition of application and then test with robotium.
ReplyDeletethanks for the reply.. I will check that
ReplyDeletehow to open url in my robotium of test application? How can I launch any UKL from my android test application project and then test that web site with robotium.
ReplyDeleteIs there any way I can use robotium to launch URL's?
Yes, its possible. But, you should know difference between selenium and robotium. robotium need to be defined with activity. So , you have to define browser activity with robotium. You can find web elements. you can click or any other options BUT, you have to keep in mind , selenium is specialized in here, not robotium. Robotium is for testing app not web application.
DeleteIs there any way I can open the URL from my Test project using robotium. I want to test one of the websites on emulator.
ReplyDeletePlease let me know whether robotium supports this feature or not..
see my previous comment... and a little solve to open URL... first open browser activity, select address box, type the URL string and then press enter or click GO button.. It is not like as selenium , it captures activity, so you have perform actions manually.
DeleteThanks
Hey Thanks for the reply.
ReplyDeleteThanks god...:)
DeleteI am struggling to find out the type of webelements and click on them.
ReplyDeleteI try to use Monitor.bat which is inside of Tools (ADT).
Let us say I have - Button with text on it- "Buy".
The object's attributes are shown as class=android.widget.Button
If I use - solo.clickOnButton("Buy"), it is failing.
solo.clickOnText("Buy") also failing.
Any suggestion to overcome this issue.
Thanks,
VSB
if it is a web element, then clickonText will not work. Click on text is for native applications. Try using solo.getWebElement(By[use any one method])
ReplyDeleteI am able to open a url using robotium, but i need to do some action with the components on the page like textbox or buttons etc. how can i do that. I am not able to get the element from the webpage opened in mobile app using robotium. Is there any way to do this.
ReplyDeleteYou have to instrument the browser. then you can find elements from web page with robotium . BTW, you may use selenium with android driver also.
DeleteCan you please provide me sample for this. thanks a lot in advance. :)
DeletePlease mail me your web app's link, i can make a small example on weekends.
Deletethanks for the efforts, but example of clicking on google editfield will also help. Thanks :)
Deleteokay, I will try to do that in this weekend. and send you link in here
Delete