我通过 BrowserMobProxyServer(在 firefox 上)运行 Java 中的 Selenium 2,因为我需要在导航表单时捕获某些网络事件。我有一个 javascript 命令,我可以通过 JavascriptExecutor 使用 .executeScript("script.test") 调用它,但如果代理打开,这将不起作用。它在代理关闭的情况下工作正常 - 有没有办法在代理开启的情况下进行这项工作,或者无法通过代理进行 javascript 注入?
这是我使用代理创建的驱动程序。
server = new BrowserMobProxyServer();
server.start();
int port = server.getPort();
String proxy_address = "127.0.0.1:"+port+"";
org.openqa.selenium.Proxy selenium_proxy = new org.openqa.selenium.Proxy();
selenium_proxy.setHttpProxy(proxy_address)
.setFtpProxy(proxy_address)
.setSslProxy(proxy_address);
Proxy proxy = ClientUtil.createSeleniumProxy(server);
DesiredCapabilities seleniumCapabilities = new DesiredCapabilities();
seleniumCapabilities.setCapability(CapabilityType.PROXY,selenium_proxy);
seleniumCapabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS,true);
seleniumCapabilities.setCapability(CapabilityType.SUPPORTS_JAVASCRIPT, true);
driver = new FirefoxDriver(seleniumCapabilities);
我的 javascript 测试如下所示。
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("script.test"); //Expect to have the form reach the result page
Assert that an element on the result page is present