【问题标题】:How to use execute selenium automation scripts(java) using safari technology preview?如何使用 safari 技术预览执行 selenium 自动化脚本(java)?
【发布时间】:2019-01-06 08:31:08
【问题描述】:

我需要一些关于在 Safari 上运行我的自动化脚本的帮助。

我在 Mac OS(High Sierra) 和 Safari 11.1.2 上运行我的 selenium webdriver 脚本

我已将 WebDriver 扩展添加到 Safari 浏览器中,并且我已启用“允许远程自动化”

这是我尝试调用 selenium webdriver 的方式:

   SafariOptions safariOptions = new SafariOptions();
    safariOptions.useCleanSession(true);
    safariOptions.setUseTechnologyPreview(true);
    WebDriver driver = new SafariDriver(safariOptions);

我还在我的机器上安装了 Safari 技术预览版。

当我运行我的脚本时,它会抛出以下错误:

    org.openqa.selenium.SessionNotCreatedException: Could not create a session: A browser with name 'safari' version '(null)' could not be found on the system.
Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:26:55.152Z'
System info: host: 'Meghas-MacBook-Pro.local', ip: 'fe80:0:0:0:1c74:d309:2877:bd09%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13.4', java.version: '1.8.0_171'
Driver info: driver.version: InitiateWebDriver
remote stacktrace: 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$new$0(W3CHandshakeResponse.java:57)
    at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$getResponseFunction$2(W3CHandshakeResponse.java:104)
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:123)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
    at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:152)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:545)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:209)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:132)
    at org.openqa.selenium.safari.SafariDriver.<init>(SafariDriver.java:78)
    at org.openqa.selenium.safari.SafariDriver.<init>(SafariDriver.java:60)

所以当我卸载 Safari 技术预览,并将代码更改为

org.openqa.selenium.WebDriverException: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:24147
Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:26:55.152Z'
System info: host: 'Meghas-MacBook-Pro.local', ip: 'fe80:0:0:0:1c74:d309:2877:bd09%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13.4', java.version: '1.8.0_171'
Driver info: driver.version: InitiateWebDriver
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:92)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:545)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:209)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:132)
    at org.openqa.selenium.safari.SafariDriver.<init>(SafariDriver.java:78)
    at org.openqa.selenium.safari.SafariDriver.<init>(SafariDriver.java:60)

中间还说“Safari 驱动程序需要 safari 10 在 OSX EL Capitan 或更高版本上运行”

【问题讨论】:

    标签: java selenium safari safaridriver


    【解决方案1】:

    与其他 selenium webdrivers 一样,您应该指定 Safari 的二进制文件在哪里运行它。

    System.setProperty("webdriver.safari.driver", "/mypath/binary");
    

    路径通常是/System/Library/CoreServices/SafariSupport.bundle/Contents/MacOS/safaridriver。并在您的示例行之前执行此操作。

    并激活 Safari 自动化:

    【讨论】:

    • 感谢您的回复。我尝试指定 safaridriver 的路径 Eg:System.setProperty("webdriver.safari.driver", "/user/bin/safaridriver");它不起作用。这是我尝试过的: System.setProperty("webdriver.safari.driver", "/user/bin/safaridriver"); SafariOptions safariOptions = new SafariOptions(); safariOptions.useCleanSession(true); // safariOptions.setUseTechnologyPreview(true); driver = new SafariDriver(safariOptions);
    • 这是响应:org.openqa.selenium.WebDriverException: java.net.ConnectException: 无法连接到 localhost/0:0:0:0:0:0:0:1: 26940 构建信息:版本:'3.11.0',修订:'e59cfb3',时间:'2018-03-11T20:26:55.152Z' 系统信息:主机:'Meghas-MacBook-Pro.local',ip:' fe80:0:0:0:1c74:d309:2877:bd09%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13.4', java.version :'1.8.0_171'
    • 你下载了预览软件吗?从商店。
    • 几个月前它对我有用,但你是对的。使用最新版本的 selenium 并且预览版目前无法正常工作。
    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 2021-01-14
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    相关资源
    最近更新 更多