Я пытаюсь выполнить этот java код
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);
Я пытаюсь выполнить это js на этом 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>
Я получаю ошибку при попытке выполнить jsAlg
: javascript error: Unexpected token '}'
Что не так в jsAlg
?
Редактировать 1
Проблема в var target = ...
.
Я заменил это на var target = document.getElementById('target');
и работаю.
Но мне нужно использовать XPathEvaluator
, потому что я выполняю это js
в другом случае, где target
не имеет id
и может идентифицировать его с xpath.
Редактировать 2 (я нашел реальную проблему)
Проблема была в .createExpression(//div[@id = 'target'])
Это должно быть .createExpression(\"//div[@id = 'target']\")
Параметр должен быть между "