我想使用execute_async_script命令(在Selenium远程webdriver中)通过回调执行一些JS。
我在selenium.selenium模型的当前设置中有类似的内容:
self.selenium = selenium("localhost", 4444, "*firefox", "http://localhost:8000")
但是如何在selenium.selenium旁边使用WebDriver实现,以便我可以调用execute_async_script?
答案 0 :(得分:4)
听起来你现在正在使用遥控器设置,是吗?您应该能够在该代码中实例化WebDriver实例,但您需要引用WebDriver dll。您需要实例化浏览器驱动程序对象的实例(即:FirefoxDriver,InternetExplorerDriver,ChromeDriver等),然后将您的IWebDriver“驱动程序”属性设置为等于该实例。然后创建一个名为“js”(或任何你想要的)的接口对象作为IJavaScriptExecutor对象,并调用非静态方法“ExecuteScript”或“ExecuteAsyncScript”(在你的情况下)。
下面的代码在C#.NET中(假设您使用的是NUnit)。你必须找到Python实现,因为我不懂那种语言。
班级数据成员:
private IWebDriver driver;
private StringBuilder verificationErrors;
private string baseURL;
<强>代码:强>
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(...);