Open
Description
What steps will reproduce the problem?
My Robotium test for an Android application is as follows.
public void testLogin()
{
solo.waitForView(android.webkit.WebView.class);
logWebElementsFound();
}
/**
* Logs the WebElements currently displayed.
*/
private void logWebElementsFound(){
for(WebElement webElement : solo.getCurrentWebElements()){
Log.d("Robotium", "id: '" + webElement.getId() + "' text: '" + webElement.getText() + "' name: '" + webElement.getName() +
"' class name: '" + webElement.getClassName() + "' tag name: '" + webElement.getTagName() + "'");
}
}
What is the expected output? What do you see instead?
I am trying to list all the elements of my WebView in the logs.
I do not see those and see the following error within my Launcher Activity for
a few seconds. After a few seconds, the content on my activity is loaded but I
still do not see any WebView elements in the logs.
I was able to copy the error from my screen when I was "debugging" the test (as
opposed to running it).
What version of the product are you using? On what operating system?
robotium-solo-5.1.jar
Android KitKat
Please provide any additional information below.
ERROR: Illegal character in fragment at index 5655: javascript:/** * Used by
the web methods. * * @author Renas Reda, [email protected] * */ function
allWebElements() { for (var key in document.all){ try{
promptElement(document.all[key]); }catch(ignored){} } finished(); } function
allTexts() { var range = document.createRange(); var
walk=document.createTreeWalker(document.body,NodeFilter.SHOW_TEXT,null,false);
while(n=walk.nextNode()){ try{ promptText(n, range); }catch(ignored){} }
finished(); } function clickElement(element){ var e =
document.createEvent('MouseEvents'); e.initMouseEvent('click', true, true,
window, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
element.dispatchEvent(e); } function id(id, click) { var element =
document.getElementById(id); if(element != null){ if(click == 'true'){
clickElement(element); } else{ promptElement(element); } } else { for (var key
in document.all){ try{ element = document.all[key]; if(element.id == id) {
if(click == 'true'){ clickElement(element); return; } else{
promptElement(element); } } } catch(ignored){} } } finished(); } function
xpath(xpath, click) { var elements = document.evaluate(xpath, document, null,
XPathResult.ORDERED_NODE_ITERATOR_TYPE, null); if (elements){ var element =
elements.iterateNext(); while(element) { if(click == 'true'){
clickElement(element); return; } else{ promptElement(element); element =
result.iterateNext(); } } finished(); } } function cssSelector(cssSelector,
click) { var elements = document.querySelectorAll(cssSelector); for (var key in
elements) { if(elements != null){ try{ if(click == 'true'){
clickElement(elements[key]); return; } else{ promptElement(elements[key]); }
}catch(ignored){} } } finished(); } function name(name, click) { var
walk=document.createTreeWalker(document.body,NodeFilter.SHOW_ELEMENT,null,false)
; while(n=walk.nextNode()){ try{ var attributeName = n.getAttribute('name');
if(attributeName != null && attributeName.trim().length>0 && attributeName ==
name){ if(click == 'true'){ clickElement(n); return; } else{ promptElement(n);
} } }catch(ignored){} } finished(); } function className(nameOfClass, click) {
var
walk=document.createTreeWalker(document.body,NodeFilter.SHOW_ELEMENT,null,false)
; while(n=walk.nextNode()){ try{ var className = n.className; if(className !=
null && className.trim().length>0 && className == nameOfClass) { if(click ==
'true'){ clickElement(n); return; } else{ promptElement(n); } }
}catch(ignored){} } finished(); } function textContent(text, click) { var range
= document.createRange(); var
walk=document.createTreeWalker(document.body,NodeFilter.SHOW_TEXT,null,false);
while(n=walk.nextNode()){ try{ var textContent = n.textContent;
if(textContent.trim() == text.trim()){ if(click == 'true'){ clickElement(n);
return; } else{ promptText(n, range); } } }catch(ignored){} } finished(); }
function tagName(tagName, click) { var elements =
document.getElementsByTagName(tagName); for (var key in elements) { if(elements
!= null){ try{ if(click == 'true'){ clickElement(elements[key]); return; }
else{ promptElement(elements[key]); } }catch(ignored){} } } finished(); }
function enterTextById(id, text) { var element = document.getElementById(id);
if(element != null) element.value = text; finished(); } function
enterTextByXpath(xpath, text) { var element = document.evaluate(xpath,
document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ).singleNodeValue;
if(element != null) element.value = text; finished(); } function
enterTextByCssSelector(cssSelector, text) { var element =
document.querySelector(cssSelector); if(element != null) element.value = text;
finished(); } function enterTextByName(name, text) { var
walk=document.createTreeWalker(document.body,NodeFilter.SHOW_ELEMENT,null,false)
; while(n=walk.nextNode()){ var attributeName = n.getAttribute('name');
if(attributeName != null && attributeName.trim().length>0 && attributeName ==
name) n.value=text; } finished(); } function enterTextByClassName(name, text) {
var
walk=document.createTreeWalker(document.body,NodeFilter.SHOW_ELEMENT,null,false)
; while(n=walk.nextNode()){ var className = n.className; if(className != null
&& className.trim().length>0 && className == name) n.value=text; } finished();
} function enterTextByTextContent(textContent, text) { var
walk=document.createTreeWalker(document.body,NodeFilter.SHOW_TEXT,null,false);
while(n=walk.nextNode()){ var textValue = n.textContent; if(textValue ==
textContent) n.parentNode.value = text; } finished(); } function
enterTextByTagName(tagName, text) { var elements =
document.getElementsByTagName(tagName); if(elements != null){ elements[0].value
= text; } finished(); } function promptElement(element) { var id = element.id;
var text = element.innerText; if(text.trim().length == 0){ text =
element.value; } var name = element.getAttribute('name'); var className =
element.className; var tagName = element.tagName; var attributes = ""; var
htmlAttributes = element.attributes; for (var i = 0, htmlAttribute;
htmlAttribute = htmlAttributes[i]; i++){ attributes += htmlAttribute.name +
"::" + htmlAttribute.value; if (i + 1 < htmlAttributes.length) { attributes +=
"#$"; } } var rect = element.getBoundingClientRect(); if(rect.width > 0 &&
rect.height > 0 && rect.left >= 0 && rect.top >= 0){ prompt(id + ';,' + text +
';,' + name + ";," + className + ";," + tagName + ";," + rect.left + ';,' +
rect.top + ';,' + rect.width + ';,' + rect.height + ';,' + attributes); } }
function promptText(element, range) { var text = element.textContent;
if(text.trim().length>0) { range.selectNodeContents(element); var rect =
range.getBoundingClientRect(); if(rect.width > 0 && rect.height > 0 &&
rect.left >= 0 && rect.top >= 0){ var id = element.parentNode.id; var name =
element.parentNode.getAttribute('name'); var className =
element.parentNode.className; var tagName = element.parentNode.tagName;
prompt(id + ';,' + text + ';,' + name + ";," + className + ";," + tagName +
";," + rect.left + ';,' + rect.top + ';,' + rect.width + ';,' + rect.height); }
} } function finished(){ prompt('robotium-finished'); } allWebElements();
Original issue reported on code.google.com by [email protected]
on 19 Jun 2014 at 10:31