4

I would like to use the execute_async_script command (in the Selenium remote webdriver) to execute some JS with a callback.

I have something similar to this in my current setup for the selenium.selenium model:

self.selenium = selenium("localhost", 4444, "*firefox", "http://localhost:8000")

But how do I use the WebDriver implementation alongside selenium.selenium so I can call execute_async_script?

1 Answer 1

4

It sounds like you are using the remote control setup right now, yes? You should be able to instantiate a WebDriver instance from within that code, but you need to reference the WebDriver dlls. You will need to instantiate an instance of a browser driver object (ie: FirefoxDriver, InternetExplorerDriver, ChromeDriver, etc..) and then set your IWebDriver "driver" property equal to that instance. Then create an interface object named "js" (or whatever you'd like) as an IJavaScriptExecutor object and call the non-static method "ExecuteScript" or "ExecuteAsyncScript" (in your case).

My code below is in C#.NET (assuming you're using NUnit). You'll have to find the Python implementation since I don't know that language.

Class data members:

private IWebDriver driver;
private StringBuilder verificationErrors;
private string baseURL;

Code:

driver = new FirefoxDriver(new FirefoxProfile());
baseURL = "http://???";  // replace "???" with website domain
ISelenium selenium = new WebDriverBackedSelenium(driver, baseURL);
selenium.Start();

IJavaScriptExecutor js = driver as IJavaScriptExecutor;
js.ExecuteScript("$('#id').click();");  // assumes JQuery is used in page
js.ExecuteAsyncScript(...);

For Python, you can have a look at answer

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.