Quantcast
Channel: Active questions tagged selenium - Stack Overflow
Viewing all articles
Browse latest Browse all 97813

Selenium JavascriptExecutor - Unexpected token at javascript algorithm

$
0
0

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 "


Viewing all articles
Browse latest Browse all 97813

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>