使用Selenium Webdriver 3.0 beta4时,如何在firefox 48中使用ByPass /忽略不受信任的证书错误

时间:2016-10-10 08:43:39

标签: firefox jenkins selenium-webdriver firefox-marionette geckodriver

我正在尝试使用Selenium stanalone 3 beta4.jar + FireFox48 + Geckodriver对RD机加工及以下是我观察到的问题:

i)我无法绕过或忽略我的应用程序的证书安全错误,这是我正在使用的一段代码。

ii)我想在用户输入的基础上调用自定义或默认的firefox配置文件,但这也行不通如果我从Jenkins(linux机器)触发自动化套件,我发现每次触发套件它创建一个新的FireFox配置文件,而不是调用我从代码传递的默认值或自定义值。 但是,如果我从安装在Windows机器上的Eclipse调用相同的测试套件,则会根据代码选择firefox配置文件值。

注意:我正在使用远程桌面来执行我的测试套件,这意味着我的应用程序将在RD上调用,所有执行都会很高兴,只有调用我想从Jenkins(Linux机器)做的部分。

以下是我正在使用的代码:

if(browser.contains("FIREFOX") || browser.equalsIgnoreCase("firefox") || browser.contains("mozilla"))
   {
        FirefoxProfile profile = new FirefoxProfile();
        ProfilesIni allProfiles = new ProfilesIni();
        capability = DesiredCapabilities.firefox();
        capability.setCapability("marionette", true);



        /* If Profile value is passed i.e. Selenium_Default profile is not going to be used, user wants to use some custom profile*/                        
        if(!browserProfile.equalsIgnoreCase("SELENIUM_DEFAULT") || !browserProfile.equalsIgnoreCase("default"))
        {                       
            profile = allProfiles.getProfile(browserProfile);
            logger.debug("Profile passed : " + profile);
            capability.setCapability(FirefoxDriver.PROFILE, profile);


        }
        else
        {
                /*Handling case for default profile*/
                profile = allProfiles.getProfile("default");
                logger.debug("Profile passed : " + profile);
                capability.setCapability(FirefoxDriver.PROFILE, profile);

        }
        logger.debug("Profile :" + profile);
        profile.setAcceptUntrustedCertificates(true);
        profile.setAssumeUntrustedCertificateIssuer(false);                 
    }
browserDriver = new RemoteWebDriver(new URL(nodeAddress), capability);
browserDriver.manage().timeouts().pageLoadTimeout(1000, TimeUnit.SECONDS);          
browserDriver.manage().timeouts().implicitlyWait(90, TimeUnit.SECONDS);
browserDriver.manage().window().maximize();
browserDriver.get(applicationUrl);

logger.info("WebDriver successfully defined with Session ID:" +  browserDriver.getSessionId() + ", Page Title:" + browserDriver.getTitle() + " and URL: " + browserDriver.getCurrentUrl());

1 个答案:

答案 0 :(得分:1)

我之前遇到过同样的问题,在我的情况下我也没能加载网址。根据论坛是firefox和selenium webdriver的bug。后来尝试了以下步骤

  1. 已安装在我的机器中的已下载的geckodriver

  2. 在代码

    中配置以下基本环境

    公共类BaseConfiguration {

       public void initEnvironment(){
    String marionetteDriverLocation =  "D:\\geckodriver\\wires.exe";
    System.setProperty("webdriver.gecko.driver", marionetteDriverLocation);     
     }
    public WebDriver loadDriver(String url)
    {
    WebDriver driver = new MarionetteDriver();      
    driver.manage().window().maximize();
    driver.get(url);
    return driver;}