Конвейер GOCD, размер окна Selenium ChromeDriver не установлен - PullRequest
0 голосов
/ 28 ноября 2018

При установке размера окна для Chrome на максимальное или 1980x1080 с использованием

ChromeOptions.addArguments("--start-maximized");

или

driver.manage().window().setSize(new Dimension(1980,1080));

или

ChromeOptions.addArguments("window-size=1980,1080");

или

ChromeOptions.addArguments("--window-size=1980,1080");

окно Chrome установлено на правильный размер и отлично работает при запуске тестов из терминала или при выполнении отдельных тестовых случаев из intellij (все тесты пройдены)

Однако, когда мой конвейер GOCD выбираетвверх по работе, все начинает работать (тесты начинают выполняться нормально), затем в журнале я вижу, что окно, используемое в тесте, имеет размер 1044 x 788.

Это вызывает проблему как нужную мне кнопкунаходится справа и вне поля зрения из-за размера экрана (я предполагаю)

полученное сообщение

    2018-11-28 13:38:52.542  WARN 4456 --- [           main] utils.PageUtils                          : element not interactable
  (Session info: chrome=70.0.3538.110)
  (Driver info: chromedriver=2.44.609538 (b655c5a60b0b544917107a59d4153d4bf78e1b90),platform=Windows NT 10.0.17134 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: '3.9.1', revision: '63f7b50', time: '2018-02-07T22:25:02.294Z'
System info: host: 'DEV', ip: '192.168.1.177', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_191'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 2.44.609538 (b655c5a60b0b54..., userDataDir: C:\windows\TEMP\scoped_dir1...}, cssSelectorsEnabled: true, databaseEnabled: false, goog:chromeOptions: {debuggerAddress: localhost:62401}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, rotatable: false, setWindowRect: true, takesHeapSnapshot: true, takesScreenshot: true, unexpectedAlertBehaviour: ignore, unhandledPromptBehavior: ignore, version: 70.0.3538.110, webStorageEnabled: true}
Session ID: e3f442486d9087e190e0954c5fcc19f5: Click(btnSearchDropMenu) failed! re trying...
2018-11-28 13:38:52.549  WARN 4456 --- [           main] utils.PageUtils                          : Screen dimentions: (1044, 788)
2018-11-28 13:38:52.550  INFO 4456 --- [           main] utils.PageUtils                          : Scrolling to move 'btnSearchDropMenu' to the middle of the screen
2018-11-28 13:38:53.619 ERROR 4456 --- [           main] BaseTestFolder.BaseTest                  : org.openqa.selenium.ElementNotVisibleException: element not interactable
  (Session info: chrome=70.0.3538.110)
  (Driver info: chromedriver=2.44.609538 (b655c5a60b0b544917107a59d4153d4bf78e1b90),platform=Windows NT 10.0.17134 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds

Я попытался передать команду set size вразличные области, в том числе непосредственно перед попыткой щелкнуть по отсутствующей кнопке и переупорядочить ее, когда параметры передаются моему объекту параметров Chrome, прежде чем они передаются драйверу Chrome.

Мне нужно, чтобы окно было как минимум 1980x1080, но я не уверен, почему его нельзя установить, когда тесты выполняются на GOCD

Я не знаю, почемуэта проблема происходит.любая помощь будет принята с благодарностью

** РЕДАКТИРОВАТЬ 1 **

Что странно, что я могу уменьшить размер окна, и это свойство сохранит ...

2018-11-28 15:47:02.754  INFO 19088 --- [           main] configuration.GoogleChrome               : Window size: (1000, 600)

РЕДАКТИРОВАТЬ 2

Добавлен еще один аргумент, который я попробовал,

Это также проблема с jenkins - по умолчанию тот же размер окна: (1044, 788)

1 Ответ

0 голосов
/ 29 ноября 2018

Эта проблема, по-видимому, была вызвана двумя проблемами:

1- Когда mvn clean test запускается из IDE, этот процесс выполняется под вашим текущим пользователем.Однако при запуске средой CI процесс принадлежит процессу CI.поэтому не имеет такого же доступа к ресурсам.

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

}

...