当前位置: 首页 > 知识库问答 >
问题:

使用Selenium Grid在MacOS Mojave上运行Safari

柯书
2023-03-14

我正在尝试使用Selenium Grid在MacOS上启动Safari进行一个基本测试。

我已经注册了该节点,它在我的中心中显示如下。

集线器确认节点已启动

  • 浏览器超时:0
  • 调试:假
  • 主持人:10.120.45.211
  • 端口:5558
  • 角色:节点
  • 超时:1800
  • 清理周期:5000
  • 最大会话:5
  • 功能:功能{browserName:Safari,maxInstances:1,平台:MAC,平台名:MAC,seleniumProtocol:WebDriver,服务器:CONFIG\u UUID:1ba7b7b4-556c-430a-ab84-157…}
  • 下行极限:2
  • 中心:http://10.120.45.245:4444/grid/register
  • id:http://10.120.45.211:5558
  • 点播:5000
  • nodeStatusCheckTimeout:5000
  • 代理:组织。openqa。网格硒。代理默认远程代理
  • 寄存器:true
  • 注册周期:5000
  • 远程主机:http://10.120.45.211:5558
  • 未注册StilldownAfter:60000

我知道SafariDriver现在可以直接在macOS中使用,我正在使用这些步骤来确保它设置正确。

如果您还没有这样做,请使用“开发”菜单。选择Safari

这是我的JAVA代码:

package SeleniumGrid;

import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;

public class SafariRemoteAccess {

    public static void main(String[] args) throws MalformedURLException {

        DesiredCapabilities dc = new DesiredCapabilities();
        dc.setBrowserName("Safari");

        //Point to hub
        WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), dc);

        // Go to website via NODE
        driver.get("https://www.hsbc.co.uk/");
        driver.quit();
    }
}

当我运行程序时,我收到以下消息。

Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: Unable to create session from {
  "desiredCapabilities": {
    "browserName": "Safari",
    "server:CONFIG_UUID": "1ba7b7b4-556c-430a-ab84-1574fc7ea584"
  },
  "capabilities": {
    "firstMatch": [
      {
        "browserName": "Safari",
        "server:CONFIG_UUID": "1ba7b7b4-556c-430a-ab84-1574fc7ea584"
      }
    ]
  }
}
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'Mishal-Shahs-MacBook-Pro.local', ip: 'fe80:0:0:0:c9b:214f:9f0:2788%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.2', java.version: '1.8.0_202'
Driver info: driver.version: unknown
Command duration or timeout: 198 milliseconds**
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
    at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$errorHandler$0(JsonWireProtocolResponse.java:54)
    at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30)
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:126)
    at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
    at java.util.Spliterators$ArraySpliterator.tryAdvance(Unknown Source)
    at java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
    at java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)
    at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
    at java.util.stream.ReferencePipeline.findFirst(Unknown Source)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:144)
    at SeleniumGrid.SafariRemoteAccess.main(SafariRemoteAccess.java:17)
Caused by: org.openqa.selenium.SessionNotCreatedException: Unable to create session from {
  "desiredCapabilities": {
    "browserName": "Safari",
    "server:CONFIG_UUID": "1ba7b7b4-556c-430a-ab84-1574fc7ea584"
  },
  "capabilities": {
    "firstMatch": [
      {
        "browserName": "Safari",
        "server:CONFIG_UUID": "1ba7b7b4-556c-430a-ab84-1574fc7ea584"
      }
    ]
  }
}
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'Mishal-Shahs-MacBook-Pro.local', ip: 'fe80:0:0:0:c9b:214f:9f0:2788%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.2', java.version: '1.8.0_202'
Driver info: driver.version: unknown
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:48'
System info: host: 'LAPTOP-1MOS5JFR', ip: '10.120.45.245', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_192'
Driver info: driver.version: unknown
    at org.openqa.selenium.remote.server.NewSessionPipeline.lambda$null$4(NewSessionPipeline.java:76)
    at java.util.Optional.orElseThrow(Optional.java:290)
    at org.openqa.selenium.remote.server.NewSessionPipeline.lambda$createNewSession$5(NewSessionPipeline.java:75)
    at java.util.Optional.orElseGet(Optional.java:267)
    at org.openqa.selenium.remote.server.NewSessionPipeline.createNewSession(NewSessionPipeline.java:73)
    at org.openqa.selenium.remote.server.commandhandler.BeginSession.execute(BeginSession.java:65)
    at org.openqa.selenium.remote.server.WebDriverServlet.lambda$handle$0(WebDriverServlet.java:235)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

这是我用来在MacOS机器上设置NODE的代码

java -Dwebdriver.safari.driver=/System/Library/CoreServices/SafariSupport.bundle/Contents/MacOS/safaridriver.exe -jar selenium-server-standalone-3.141.59.jar -role node -hub 10.120.45.245:4444/grid/register -port 5558 -browser "browserName=Safari, platform=MAC, platformName=MAC, maxInstances=1"

共有1个答案

何晗昱
2023-03-14

从您的错误堆栈跟踪中不清楚Selenium Grid是否在Mac OS X上,并且要启动Selenium Node,您使用以下命令:

java -Dwebdriver.safari.driver=/System/Library/CoreServices/SafariSupport.bundle/Contents/MacOS/safaridriver.exe -jar selenium-server-standalone-3.141.59.jar -role node -hub 10.120.45.245:4444/grid/register -port 5558 -browser "browserName=Safari, platform=MAC, platformName=MAC, maxInstances=1"

为什么您会将错误日志视为(与Selenium网格相关):

Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'Mishal-Shahs-MacBook-Pro.local', ip: 'fe80:0:0:0:c9b:214f:9f0:2788%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.2', java.version: '1.8.0_202'
Driver info: driver.version: unknown

然后(第一组涉及Mac OS X,第二组涉及Windows 10):

Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'Mishal-Shahs-MacBook-Pro.local', ip: 'fe80:0:0:0:c9b:214f:9f0:2788%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.2', java.version: '1.8.0_202'
Driver info: driver.version: unknown
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:48'
System info: host: 'LAPTOP-1MOS5JFR', ip: '10.120.45.245', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_192'
Driver info: driver.version: unknown

但是,您用于启动Selenium网格节点的命令很容易出错,因为它包含以下两个部分:

  • 平台=MAC
  • 平台名称=MAC

假设Selenium Grid Node是从Windows 10框启动的,命令应该是:

java -Dwebdriver.safari.driver=C:\path\to\safaridriver.exe -jar selenium-server-standalone-3.141.59.jar -role node -hub 10.120.45.245:4444/grid/register -port 5558 -browser "browserName=safari, platform=WINDOWS, maxInstances=1"

注意:确保在Windows 10中安装Safari浏览器。

 类似资料:
  • 问题内容: 我正在运行带有多个Chrome实例的selenium网格。selenium网格是2个带有多个节点的机器(窗口)。测试是从连接到网格的另一台机器执行的。为了能够使用远程调试功能,我需要从正在执行的计算机(可以读取会话主机和驱动程序debugUrl)连接到其他计算机,最后是chrome实例。 但是chrome拒绝localhost以外的任何东西。 我只能找到解决方案,当人们只有一个实例时,

  • 我在尝试使用Podman在RedHat 8上运行OpenMaptileServer时遇到问题。 这是我的开始脚本: 图像拉得很好,而且开始看起来很好。我可以执行 看看那个容器。一切看起来都很好。如果我用 我没有看到任何我认为是一个问题,但是当我试图击中主页http://localhost:8080,然后我得到站点未找到的错误。 我想这可能是防火墙的问题,所以我禁用了防火墙,但结果相同。我还通过安装

  • 我使用R命令安装了h2o。这促使我安装了Java的最新版本:版本16。一切都运行得很好——除了在发布时,h2o会唠叨我从h2o.ai网站安装最新版本的h2o,因为用CRAN下载打包的版本已经过时5个月了。 当我下载h2o版本3.32.0.5时,我无法用:我收到消息“仅支持Java 8…14,系统版本为16”。 Java14被列为有安全缺陷,所以我不想从Java16降级;相反,我想恢复到以前版本的h

  • java emmarun-jar helloworld.jar 我明白了: 线程“main”java.lang.noClassDeffounderror:emmarun中的异常由:java.lang.ClassNotFoundException:emmarun在java.net.urlClassLoader$1.run(urlClassLoader.java:217)在java.net.urlCl

  • 我们有一个gitlab-ci运行器,它托管在服务器a下运行的docker容器上。现在,我们希望将gitlab-ci运行器配置为一个容器,以便在主机上执行命令。 我们尝试使用下面的命令将运行器注册为“shell”执行器,但它仍然试图只访问gitlab-ci运行器容器中的shell,而不是主机服务器shell。 sudo gitlab-runner注册 --非交互式 --URL“https://git

  • 问题内容: 我正在使用量角器针对Angular应用程序运行测试。它们可以在我的OSX环境上工作,但不能在TeamCity试图运行它的Linux上工作。 当我在本地OSX环境上运行此命令时,它可以工作(也在我的同事计算机上进行了测试): 当我在Linux机器上运行此程序时,或者TeamCity作业尝试运行它时,它失败了: 尝试解决: 我已经看过这个问题,但是独立的webdriver服务器无法解决。