I try to execute this java code
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement hoverElement = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//div[@id = 'demo']")));
//trigger mouseover on hoverElement
//return innerHTML of element which appear
String jsAlg = "" +
"if(document.createEvent){" +
"var evObj = document.createEvent('MouseEvents');" +
"evObj.initEvent('mouseover', true, false);" +
"arguments[0].dispatchEvent(evObj);" +
"}else if(document.createEventObject){" +
"arguments[0].fireEvent('onmouseover');" +
"}" +
"var target = new XPathEvaluator().createExpression(//div[@id = 'target'])" +
".evaluate(document, XPathResult.FIRST_ORDERED_NODE_TYPE)" +
".singleNodeValue" +
"return target.innerHTML;";
String targetHTML = (String)((JavascriptExecutor)driver).executeScript(jsAlg, hoverElement);
System.out.println(targetHTML);
I try to execute this js on this html
<html>
<head>
</head>
<body>
<div id="demo" onmouseover="mouseOver()" onmouseout="mouseOut()">Mouse over here</div>
<script>
var node = document.createElement("div");
node.id = "target";
node.innerHTML = "mouse over active";
function mouseOver() {
document.body.appendChild(node);
}
function mouseOut() {
document.body.removeChild(node);
}
</script>
</body>
</html>
I get an error when try to execute jsAlg
: javascript error: Unexpected token '}'
What is wrong at jsAlg
?
Edit 1
The problem is at var target = ...
.
I replaced that with var target = document.getElementById('target');
and work.
But I need to use XPathEvaluator
because, I execute this js
in other case, where target
don't have an id
and can identify it with xpath.
Edit 2(I found the real problem)
The problem was at .createExpression(//div[@id = 'target'])
It should be .createExpression(\"//div[@id = 'target']\")
Parameter should be between "