如果问题是关于以新方式使用 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 得到的错误片段:
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:转发新会话时出错,找不到:{browserName=safari} 命令持续时间或超时:109 毫秒
注意:对于 webdriver,相同的代码可用于(独立)远程 webdriver 执行与网格,不同之处在于对于远程,您使用远程服务器 ip,而对于 grid2,您使用集线器 ip。SafariDriver 在远程 webdriver 上工作,但目前似乎还没有在 Grid2 上工作。
远程 webdriver 启动:
java -jar selenum-server-standalone-2.21.0.jar [-port somePort] //默认端口4444