1

phantomjs 中的 ghostdriver 似乎存在一个问题,即当单击按钮后 HTTP 调用失败时,整个事情都会失败。

https://github.com/detro/ghostdriver/issues/202#issuecomment-19808784

该问题已得到修复,并且在主分支中。给出了有关如何引用新文件以及不使用 phantomjs 中包含的 ghostdriver 的说明。

Java 在这里: https ://github.com/detro/ghostdriver/issues/243

并且似乎有一个值

  PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY

但这在 C# 中不存在

所以试过

  var opts = new PhantomJSOptions(); 
  opts.AddAdditionalCapability("phantomjs.ghostdriver.path.property", "c:\\path\\src\\main.js");

但不行,phantomjs 中的输出仍然显示旧版本


EDIT1:这与可以设置的 phantomJS 的路径不同

 PhantomJSDriverService.CreateDefaultService("c:\path\to\phantomjs.exe")

我试图告诉 phantomjs 使用本地版本的 Ghostdriver,而不是 phantomjs 本身包含的 ghostdriver。


EDIT2:所以在这里挖掘Java代码文件 https://github.com/detro/ghostdriver/blob/master/binding/java/src/main/java/org/openqa/selenium/phantomjs/PhantomJSDriverService.java

我找到了设置 Java 静态字符串的代码

 public static final String PHANTOMJS_GHOSTDRIVER_PATH_PROPERTY = "phantomjs.ghostdriver.path";

这意味着我在上面设置错误,但是在更正后仍然不起作用

var opts = new PhantomJSOptions(); 
opts.AddAdditionalCapability("phantomjs.ghostdriver.path", "c:\\path\\src\\main.js");

虽然越来越热......

4

2 回答 2

4

你是对的,在当前发布的 .NET 绑定的二进制版本中没有办法做到这一点。但是,刚刚进行了更改以允许这样做。在 .NET 绑定中,代码如下所示:

var service = PhantomJSDriverService.CreateDefaultService(@"path\to\phantomjs.exe");
service.GhostDriverPath = @"path\to\ghostdriver\main.js";

var driver = new PhantomJSDriver(service);

PhantomJSDriverService通过 设置什么和通过什么设置的区别PhantomJSOptions可以总结如下。如果选项是要传递给 PhantomJS.exe 的命令行参数,则应通过服务设置;如果它是 GhostDriver 行为方式的选项,则应通过选项类进行设置。

于 2013-07-17T21:39:13.037 回答
2

您至少有两种方法可以指定 phantomjs 执行路径。

在 PhantomJSDriverService 中使用静态方法

var driver = new PhantomJSDriver(PhantomJSDriverService.CreateDefaultService("PHANTOMJSPATHHERE"));

使用 PhantomJSDriver 的适当构造函数(接受一个字符串)

var driver = new PhantomJSDriver("PHANTOMJSPATHHERE");
于 2013-07-17T06:35:32.737 回答