Я могу выполнить скрипт 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 параметра, вызывающих url
и path
, в сценарий phantomJS как system.args[1]
и system.args[2]
. есть идеи как это сделать?
Runtime#exec
или аналогичный вместо выполнения того же скрипта через Ghostdriver, когда у вас есть скрипт. Если вы не ограничены сценарием, вам следует использовать API, например, открыть страницу с помощьюdriver
и получить исходный код страницы. - person Artjom B.   schedule 25.01.2016