Как обойти / игнорировать ошибку ненадежного сертификата в firefox 48 при использовании Selenium Webdriver 3.0 beta4

#firefox #jenkins #selenium-webdriver #firefox-marionette #geckodriver

#firefox #дженкинс #selenium-webdriver #firefox-марионетка #geckodriver

Вопрос:

Я пытаюсь использовать Selenium stanalone 3 beta4.jar FireFox48 Geckodriver на обработанном РД и ниже приведены проблемы, которые я наблюдаю :

я) Я не могу обойти или проигнорировать ошибку безопасности сертификата для моего приложения ниже приведен фрагмент кода, который я использую.

ii) И я хочу вызвать пользовательский или стандартный профиль firefox на основе пользовательского ввода, но это также не сработает, если я запускаю пакет автоматизации с Jenkins (linux machine) Я заметил, что каждый раз, когда я запускаю пакет, он создает новый профиль FireFox, а не вызывает стандартный или пользовательскийзначение, которое я передаю из кода. Однако, если я вызываю тот же набор тестов из Eclipse, который установлен на компьютере с Windows, значение профиля firefox выбирается в соответствии с кодом.

Примечание: я использую удаленный рабочий стол для выполнения моего набора тестов, что означает, что мое приложение будет вызываться на удаленном компьютере, и все выполнение будет выполняться только там, вызывая ту часть, которую я могу захотеть выполнить с 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:

Я столкнулся с той же проблемой ранее, в моем случае мне также не удалось загрузить URL. Согласно форуму, это ошибка firefox и selenium webdriver. Позже попробовал выполнить следующие шаги

  1. Загруженный geckodriver установлен на моем компьютере

  2. Настроил следующую базовую среду внутри кода

    базовая конфигурация открытого класса {

        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;}
      

Комментарии:

1. Привет, Кумрун, спасибо за ответ. Я не хочу, чтобы пользователь отправлял местоположение geckodriver, поскольку это может отличаться от компьютера к компьютеру при вызове кода, чтобы справиться с этим, я запускаю Selenium standalone server с нижеприведенным набором команд на RD перед запуском пакета, я думаю, это также должно установить свойство на сервере :

2. Команда: java -Xmx700M -Dwebdriver.ie.driver=»IEDriverServer.exe » -Dwebdriver.chrome.driver=»chromedriver.exe » -Dwebdriver.gecko.driver=»geckodriver.exe » — банка selenium-server-standalone-3.0.0-beta4.jar -порт 4444 1> console.log 2> amp; 1 Пожалуйста, дайте мне знать, если мне все еще нужноустановите местоположение драйвера в System.setProperty()?