【问题标题】:Selenium Grid with safari browser带有 safari 浏览器的 Selenium Grid
【发布时间】:2012-04-25 12:41:47
【问题描述】:

请帮帮我 如何在 selenium 网格中实例化 Safari

    capabilities = new DesiredCapabilities();
            // Version browser
            capabilities.setVersion(versaoBrowser);
            capabilities.setBrowserName("safari");
            capabilities.setJavascriptEnabled(true);
            // Platform test runner
            capabilities.setPlatform(platform);

在服务器上很好

-browser "browserName=safari,version=5,platform=WINDOWS,javascriptEnable=true"

【问题讨论】:

标签: selenium selenium-grid


【解决方案1】:

如果问题是关于以新方式使用 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

【讨论】:

  • 虽然网格控制台不显示图标,但这并不意味着它不会正确代理 Safari 请求。网格集线器只是一个负载平衡路由器,用于将请求的功能注册到提供的功能。
【解决方案2】:

我相信你要的是这样的东西?

selenium = new DefaultSelenium("localhost", 4444, *safari,"http://google.com.au");
selenium.start();

我通常使用 WebDriver,但我的理解是功能是创建浏览器实例时的选项,而不是打开浏览器本身。虽然我可能是错的,因为我对 Selenium Grid 没有经验。

编辑:Thisthis 可能会有所帮助。

【讨论】:

  • 所以我正在使用 selenium web 驱动程序,这种类型的实例是 selenium RC,必须在这方面取得进展,我的库更新为 selenium 2.21,现在我的代码很好 能力 = DesiredCapabilities.safari();能力.setBrowserName("safari");能力.setJavascriptEnabled(true);能力.setPlatform(平台); 并且遇到了 Safari 位置的新问题...
    请将包含“Safari.exe”的目录添加到您的 PATH 环境变量中,或明确指定 Safari 的路径,如下所示: *safari c:\blah\Safari.exe
  • 这是因为您必须将 Safari 驱动程序放置在您将在代码中调用的位置(例如 safari = new safariDriver("WHERE IT IS");) 或将文件路径添加到您的PATH 环境。如果您在此过程中需要帮助,请告诉我,我会截取屏幕截图并进行解释。
  • JoaoSakai,你能发布你得到的确切错误细节吗?我认为这可能对我们其他人有所帮助。我不记得自己看到过那个错误。我以为你只能指定 Firefox 的路径,而不是 IE 和 Safari……这对我来说是个新闻。
  • 另外,我可能是错的,但我相信 DesiredCapabilities.safari() 是主干中 WebDriver/Selenium 的新功能。同时,SafariDriver 和独立服务器 JAR 的 Java 绑定在 2.21 版中,没有该选项。因此,您应该使用通用 DesiredCapabilities 对象的旧方法,然后设置浏览器名称、版本和平台。
  • 在创建新的 IE 驱动程序实例时,我目前正在指定 InternetExplorerDriver.exe 的路径。事实上,我不必这样做的唯一浏览器是 Firefox,因为它使用 IDE 而不是 driver.exe 来运行浏览器(或者至少这是我得到的印象)。不过,我以前没有使用过 Safari,也许我在这里遗漏了什么?
猜你喜欢
  • 1970-01-01
  • 2013-02-17
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 2019-06-26
相关资源
最近更新 更多