如何从Selenium / Ghostdriver传递参数到PhantomJS脚本

时间:2016-01-20 07:43:24

标签: java selenium selenium-webdriver phantomjs ghostdriver

我要执行下载网页的phantomJS脚本(args [1])并将结果html保存到文件(args [2])中,如下所示:

var system = require('system');
var page = require('webpage').create();
var fs = require('fs');

// Set the url address and the path
var url = system.args[1];
var path = system.args[2];

page.open(url, function () {
   fs.write(path, page.content, 'w');
   phantom.exit();
});

我正在使用selenium/ghostdriver执行脚本,如下所示:

DesiredCapabilities cap = new DesiredCapabilities();
cap.setJavascriptEnabled(true);
cap.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,".../phantomjs");

String [] phantomJsArgs = {url,path};
cap.setCapability(PhantomJSDriverService.PHANTOMJS_GHOSTDRIVER_CLI_ARGS, phantomJsArgs);

PhantomJSDriver driver = new PhantomJSDriver(cap);          
String content = new String(Files.readAllBytes(Paths.get(scriptPath)),Charset.forName("UTF-8"));
driver.executePhantomJS(content);

此代码有效,除非我尝试将selenium/ghostdriver 2个参数调用urlpath作为system.args[1]system.args[2]传递给phantomJS脚本。知道怎么做吗?

3 个答案:

答案 0 :(得分:1)

为什么不直接将参数传递给executePhantomJS方法?

driver.executePhantomJS(content, url, path);

答案 1 :(得分:0)

我解决问题的方法不是将2个参数作为参数传递(我们不在命令行中),我所做的是将文件编辑为字符串并用{替换这两个变量的值{1}}。

答案 2 :(得分:0)