Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

put a string with html/Javascript into selenium webdriver

I have a html document in memory as a string. It contains a <script> tag with a little script that manipulates the dom. I now want to load that html page into selenium webdriver and get back the page after the script manipulates it. Since I have the html already in memory, I don't like the idea much of writing the html into a file and load it as file with driver.get("file://path/to/file"). So the question is, if there is a possibility to achieve what I want.

IF webdriver can't do it, maybe there is a possibility other than that?

Here comes an example:

<html><head> <script type="text/javascript"> function fill(){     var i = "secret"     document.forms[0].elements[1].value=i } </script> </head><body onload="fill()"> <form method="POST"><input type="hidden" name="he1" value=""> <input type="hidden" name="he2" value=""> </form></body></html> 

Obviously, I want the webdriver to perform the dom manipulation and change the form according to the script.

Note this is just an example. The actual script I need to run does much more complicated things.

like image 1000
luksch Avatar asked Mar 20 '14 15:03

luksch


People also ask

Can Selenium interact with Javascript?

Selenium is an open-source automation testing tool that supports a number of scripting languages like C#, Java, Perl, Ruby, JavaScript, etc.

Does Selenium load Javascript?

We can run Javascript in Selenium webdriver with Python. The Document Object Model communicates with the elements on the page with the help of Javascript. Selenium executes the Javascript commands by taking the help of the execute_script method.


1 Answers

If you don't want to create a file or load a URL before being able to replace the content of the page, you can always leverage the Data URLs feature, which supports HTML, CSS and JavaScript:

ChromeDriver driver = new ChromeDriver(); html_content = """ <html>      <head></head>      <body>          <div>              Hello World =)          </div>      </body> </html> """  driver.get("data:text/html;charset=utf-8," + html_content) 
like image 113
jolancornevin Avatar answered Sep 19 '22 13:09

jolancornevin