如果问题是关于以新方式使用 Safari,SafariDriver over Grid2,那么这将是我认为的典型方法(或多或少):
import org.openqa.selenium.*;
import org.openqa.selenium.remote.*;
import java.net.*;
DesiredCapabilities c = new DesiredCapabilities();
c.setBrowserName("safari");
/* you can then set version & platform as well, but the minimum is just browser. Maybe for Grid2 you need the others, but for remote web driver only, you don't.
*/
WebDriver d = new RemoteWebDriver(new URL("http://hubIpOrHostname:hubPort/wd/hub"),c);
这应该可行。在服务器端,我相信您只是根据 wiki 文档为 Grid2 正常实例化(最后我检查,现在可能不同):
//启动集线器
java -jar selenium-server-standalone-2.21.0.jar -role hub -port theHubPort
//启动节点
java -jar selenium-server-standalone-2.21.0.jar -role node -hub http:
//172.22.6.198:4446/wd/hub -port theNodePort
然而,当前的 Grid2 似乎不提供 Safari 支持。当我在集线器中查找已注册节点的控制台时,它没有显示 Safari 的图标。也许我错过了什么。下次我会尝试添加平台和版本,看看是否会产生差异,但认为不会。
这是我在使用 SafariDriver 的 Grid2 时遇到的错误的 sn-p:
2012 年 5 月 11 日下午 6:01:11 org.openqa.selenium.remote.RemoteWebDriver 执行
信息:执行:[null,newSession {"desiredCapabilities":"Capabilities [{browse
rName=safari}]"}]
// 错误: // 未捕获的异常:类型化变量声明:对象构造函数
: 在第 7 行: 在文件中: : new RemoteWebDriver ( new URL ( "http:
//172.22.6.198:4446/wd/hub"),c)
目标异常:org.openqa.selenium.WebDriverException: Error forwarding the n
新会话找不到:{browserName=safari}
命令持续时间或超时:109 毫秒
注意: 对于 webdriver,相同的代码可用于(独立)远程 webdriver 执行与网格,不同之处在于对于远程您使用远程服务器 ip,而对于 grid2,您使用集线器 ip。 SafariDriver 可以在远程 webdriver 上运行,但目前似乎还不能在 Grid2 上运行。
远程 webdriver 启动:
java -jar selenum-server-standalone-2.21.0.jar [-port somePort]
//默认端口4444