selenium web driver Mac上的Safari无法访问浏览器异常

时间:2016-09-24 05:35:22

标签: java selenium safari

我已经编写了简单的代码来在eclipse中使用selenium web驱动程序打开safari web浏览器。也可以在哪里查找safari exe以及将它放在mac plzz上的位置help.thanks

package sanityTest;
  import org.openqa.selenium.WebDriver;
  import org.openqa.selenium.safari.SafariDriver;

  public class AdminLogin {
     public static void main(String[]args){
        WebDriver driver=new SafariDriver();
        //driver.close();//close the browser
    }

}

我收到此错误

强文错误

2016年9月24日上午1:22:31 org.openqa.selenium.safari.SafariDriverServer开始 信息:服务器在端口3897上启动 2016年9月24日上午1:22:31 org.openqa.selenium.safari.SafariDriverCommandExecutor start 信息:启动Safari 2016年9月24日上午1:22:31 org.openqa.selenium.safari.SafariDriverCommandExecutor start 信息:等待SafariDriver连接 2016年9月24日上午1:22:41 org.openqa.selenium.safari.SafariDriverCommandExecutor stop 信息:关闭 2016年9月24日上午1:22:41 org.openqa.selenium.safari.SafariDriverCommandExecutor stop 信息:停止Safari 2016年9月24日上午1:22:41 org.openqa.selenium.safari.SafariDriverCommandExecutor stop 信息:停止服务器 2016年9月24日上午1:22:41 org.openqa.selenium.safari.SafariDriverServer停止 信息:停止服务器 2016年9月24日上午1:22:41 org.openqa.selenium.safari.SafariDriverCommandExecutor stop 信息:关闭完成 2016年9月24日上午1:22:41 org.openqa.selenium.safari.SafariDriverCommandExecutor stop 信息:关闭 2016年9月24日上午1:22:41 org.openqa.selenium.safari.SafariDriverCommandExecutor stop 信息:停止服务器 2016年9月24日上午1:22:41 org.openqa.selenium.safari.SafariDriverCommandExecutor stop 信息:关闭完成 线程“main”中的异常org.openqa.selenium.remote.UnreachableBrowserException:10080 ms后无法连接到SafariDriver 构建信息:版本:'未知',修订版:'c7b525d',时间:'2016-09-01 14:52:30 -0700' 系统信息:主机:'Vishals-MacBook-Pro.local',ip:'192.168.0.26',os.name:'Mac OS X',os.arch:'x86_64',os.version:'10 .11.5' ,java.version:'1.8.0_101' 驱动程序信息:driver.version:SafariDriver     在org.openqa.selenium.safari.SafariDriverCommandExecutor.start(SafariDriverCommandExecutor.java:118)     在org.openqa.selenium.safari.SafariDriver.startClient(SafariDriver.java:116)     在org.openqa.selenium.remote.RemoteWebDriver.startClient(RemoteWebDriver.java:284)     在org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:117)     在org.openqa.selenium.safari.SafariDriver。(SafariDriver.java:78)     在org.openqa.selenium.safari.SafariDriver。(SafariDriver.java:58)     在sanityTest.AdminLogin.main(AdminLogin.java:10)

2 个答案:

答案 0 :(得分:1)

Mac OS上的Safari WebDriver目前要求您按照详细here编译,签名并安装特定的WebDriver浏览器扩展。这需要您注册一个免费的Apple开发人员帐户并获得一个测试密钥来签署该扩展程序。

幸运的是,这种远程自动化Safari浏览器的方法目前正在进行转型。随着即将发布的Safari 10,Webkit开发人员正在构建对Safari浏览器本身的本机WebDriver支持。在我看来,目前自动化Safari的最简单方法是下载Safari Technology Preview,然后使用Selenium的当前快照版本来启动WebDriver。您可以找到有关如何使用Safari的新WebDriver功能here的说明。

答案 1 :(得分:0)

I was also facing issues in initiating safari browser on mac machine, and below solution helped me. Everytime I was calling driver init, browser was getting opened but the URL was not getting hit. I am using Page object factory, with selenium , Java , maven and testng.

if (browserType.equals("safari")) {
            // System.setProperty("webdriver.safari.driver", workingDir +
            // "//driver//SafariDriverServer.exe");
            System.setProperty("webdriver.safari.driver",
                    "/driver/SafariDriver.safariextz");
            System.setProperty("webdriver.safari.noinstall", "true");
            DesiredCapabilities desiredCapabilities = DesiredCapabilities
                    .safari();
            SafariOptions safariOptions = new SafariOptions();
            safariOptions.setUseCleanSession(true);
            safariOptions.getUseCleanSession();
            safariOptions.setUseCleanSession(true);
            desiredCapabilities.setCapability(SafariOptions.CAPABILITY,
                    safariOptions);

            // deleteCookies();
            driver = new EventFiringWebDriver(new SafariDriver());

            ThreadDriver.set(driver);
            // driver.manage().window().setSize(new Dimension(1024, 850));
            getDriver().manage().timeouts().implicitlyWait(3,
                    TimeUnit.SECONDS);
            wait = new WebDriverWait(driver, 30);
        }