Как выполнить сценарий селена с помощью плагина Zap в jenkins - PullRequest
0 голосов
/ 04 мая 2018

У меня проблема с плагином Zap в Jenkins. Предположим, у меня есть сценарий селена, написанный на Java, он запустит браузер и автоматически настроит прокси. Мне нужно запустить Java-код селена из Jenkins и использовать плагин zap, чтобы открыть прокси-сервер zap и сгенерировать отчет.

Процесс в Jenkins должен состоять в следующем: 1. запустить прокси-сервер ZAP в качестве предварительной сборки, 2. выполнить Java-код Selenium (который будет автоматически проходить через прокси-сервер ZAP). 3. Создать отчет ZAP и отправить его обратно в Jenkins. 4. Завершите работу ZAP-прокси.

Моя путаница заключается в том, что когда я использую плагин zap в Jenkins, существует начальный URL-адрес, который является обязательным. Но я не хочу активного сканирования, мне нужно только пассивное сканирование, начиная с сценария zap proxy по селену. Есть ли способ обойти это? Любой совет по этому вопросу будет полезен.

Пожалуйста, найдите мой образец сценария Java селен ниже:

public class Sample_ZapProgram {

    public static void main(String[] args) throws InterruptedException {
        WebDriver driver;


            Proxy proxy = new Proxy();
             // proxy.setHttpProxy("localhost:8090");
              proxy.setFtpProxy("localhost:8090");
              proxy.setSslProxy("localhost:8090");
              DesiredCapabilities capabilities = new DesiredCapabilities();
              capabilities.setCapability(CapabilityType.PROXY, proxy);
              System.setProperty("webdriver.chrome.driver","C:\\Users\\Administrator\\workspace\\chromedriver.exe");
              driver = new ChromeDriver(capabilities);
              driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

            driver.get("http://demo.testfire.net/");
            Thread.sleep(15000);
            driver.quit();
            //tearDown();       
        }

    }

1 Ответ

0 голосов
/ 07 мая 2018

Пример Java (образец взят из NoraUI POC ) :

/**
 * NoraUi is licensed under the license GNU AFFERO GENERAL PUBLIC LICENSE
 * 
 * @author Nicolas HALLOUIN
 * @author Stéphane GRILLON
 */
package com.github.noraui.bot;

import java.io.File;

import org.openqa.selenium.By;
import org.openqa.selenium.Proxy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.github.noraui.utils.Utilities.OperatingSystem;
import com.github.noraui.utils.Utilities.SystemArchitecture;

public class FirstSimpleBotWithZAPProxy {

    private static final Logger logger = LoggerFactory.getLogger(FirstSimpleBotWithZAPProxy.class);

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

        Proxy proxy = new Proxy();
        proxy.setAutodetect(false);
        proxy.setHttpProxy("http://localhost:8092");

        final OperatingSystem currentOperatingSystem = OperatingSystem.getCurrentOperatingSystem();
        String pathWebdriver = String.format("src/test/resources/drivers/%s/googlechrome/%s/chromedriver%s", currentOperatingSystem.getOperatingSystemDir(),
                SystemArchitecture.getCurrentSystemArchitecture().getSystemArchitectureName(), currentOperatingSystem.getSuffixBinary());

        if (!new File(pathWebdriver).setExecutable(true)) {
            logger.error("ERROR when change setExecutable on " + pathWebdriver);
        }

        System.setProperty("webdriver.chrome.driver", pathWebdriver);
        final ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.setProxy(proxy);

        WebDriver driver = new ChromeDriver(chromeOptions);
        for (int i = 0; i < 6; i++) {
            driver.get("http://www.google.com/ncr");
            WebElement element = driver.findElement(By.name("q"));
            element.sendKeys("NoraUi");
            element.submit();
            logger.info(driver.getTitle());
            WebElement r = driver.findElement(By.xpath("//*[@id='resultStats']"));
            logger.info(r.getText());
        }
        driver.quit();
    }

}

Результат ZAP :

enter image description here

...