如何在jenkins中设置chrome浏览器窗口分辨率

时间:2017-08-21 08:23:02

标签: maven selenium jenkins selenium-webdriver

通过调用pom.xml文件运行Selenium webdriver(Maven Project)脚本通过Jenkins。我已经设置了下面提到的浏览器分辨率

driver.manage().window().maximize();
Dimension defaultSize = new Dimension(2560,1440);
driver.manage().window().setSize(defaultSize);

但是,在通过Jenkins运行脚本时,Chrome浏览器窗口未设置为新维度。

注意:在本地机器上它工作正常..

2 个答案:

答案 0 :(得分:0)

Chrome不允许将大小设置为大于系统的屏幕分辨率宽度,问题可能出在您的情况。一些解决方法可能是最大化窗口,以至少在该系统上拥有最大的窗口。

虽然有时老chromedriver也会导致问题

如果仍然存在问题,则可以通过chrome选项更改分辨率:

chromeOptions.addArguments("window-size=1936,1056");

完整代码如下: -

System.setProperty("webdriver.chrome.driver","D:\\Workspace\\JmeterWebdriverProject\\src\\lib\\chromedriver.exe");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("window-size=1936,1056");
WebDriver driver = new ChromeDriver(chromeOptions);
driver.get("https://www.google.co.in/");

希望它会对你有所帮助:)。

答案 1 :(得分:0)

从我的问题中复制-GOCD pipeline, Selenium ChromeDriver window size is not set

他的问题似乎是由两个问题引起的,

1-从IDE运行mvn clean测试时,此过程将在您当前的用户下运行。但是,当由持续集成环境运行时,该进程归系统进程所有。因此没有相同的资源访问权限。

2从IDE运行时,将弹出chrome。从CI环境运行时,我假设它默认将chrome以无头模式运行。 不是,您必须设置--headless参数,这样我现在可以使用的配置如下

public class GoogleChrome extends Base {
private static final Logger logger = LogManager.getLogger(GoogleChrome.class);
private String rootPath = System.getProperty("user.dir").replace("\\","/");


@Autowired
protected WebDriver driver;

public WebDriver startChromeDriver() {
    logger.info("Chrome driver path : " + rootPath + "/../Tools/Drivers/chromedriver.exe");
    System.setProperty("webdriver.chrome.driver", rootPath + "/../Tools/Drivers/chromedriver.exe");

    Map<String, Object> prefs = new HashMap<String, Object>();
    logger.info("Disabling Chrome's credentials service");
    prefs.put("credentials_enable_service", false);
    logger.info("Disabling Chrome's password manager");
    prefs.put("password_manager_enabled", false);


    final String regex = "^\\D*$";
    final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
    final Matcher matcher = pattern.matcher(System.getProperty("user.name"));
    boolean isHuman = matcher.matches();



    ChromeOptions options = new ChromeOptions();
    options.setExperimentalOption("prefs", prefs);
    logger.info("Disabling Chrome's info bars");
    options.addArguments("disable-infobars");
    options.addArguments("--incognito");
    options.addArguments("--disable-gpu");
    options.addArguments("--no-sandbox");
    options.addArguments("--allow-insecure-localhost");

    if (isHuman){
        logger.info("Chrome starting maximized - isHuman: " +isHuman + " process run by " +System.getProperty("user.name"));
        options.addArguments("--start-maximized");
    } else {
        logger.info("Chrome starting headless - isHuman: " +isHuman + " process run by " +System.getProperty("user.name")) ;
        options.addArguments("--headless");
        options.addArguments("--window-size=1980,1080");
    }
    options.setAcceptInsecureCerts(true);

    try {
        logger.info("Killing Chrome browser");
        Runtime.getRuntime().exec("taskkill /F /IM chrome.exe");
    } catch (IOException e) {
        logger.error("Task Kill IOException : " + e.getMessage());
    }

    logger.info("Starting Chrome browser...");

    sleep(2);
    driver = new ChromeDriver(options);

    logger.info("Window size: "+ driver.manage().window().getSize());
    driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
    return driver;
}

}