Сборка и запуск Java Selenium Automation на Дженкинс - PullRequest
3 голосов
/ 17 октября 2019

Я создал автоматизацию на Java, которая использует Selenium, ChromeDriver и JExcelApi. Чтобы упростить распространение этой автоматизации, я пытаюсь добавить ее на сервер Jenkins (подробности см. В моем предыдущем посте StackOverflow ).

Я настроил проект Freestyle вДженкинс, который использует GitHub для управления исходным кодом. Для настроек среды сборки я выбрал:

Delete workspace before build starts

Наконец, при выборе «Build Now» для этого проекта запускается следующая оболочка:

javac src/GUI.java
java GUI 

При сборке программы на Jenkins яЯ получаю множество ошибок. Во-первых, вывод говорит, что мои пакеты не существуют. Кроме того, я получаю различные ошибки «не могу найти символ». Наконец, я получаю ошибки, которые говорят, что локальная переменная не может быть доступна из внутреннего класса. Вот подробный вывод консоли от Jenkins:

+ javac src/GUI.java
src/GUI.java:12: error: package Objects does not exist
import Objects.Product;
              ^
src/GUI.java:13: error: package Reader does not exist
import Reader.ReadExcel;
             ^
src/GUI.java:14: error: package Reader does not exist
import Reader.WriteExcel;
             ^
src/GUI.java:15: error: package co.mitch.selenium.runner does not exist
import co.mitch.selenium.runner.ActiveIQ;
                               ^
src/GUI.java:16: error: package co.mitch.selenium.runner does not exist
import co.mitch.selenium.runner.Ascend;
                               ^
src/GUI.java:17: error: package co.mitch.selenium.runner does not exist
import co.mitch.selenium.runner.LinkedIn;
                               ^
src/GUI.java:18: error: package jxl.read.biff does not exist
import jxl.read.biff.BiffException;
                    ^
src/GUI.java:19: error: package jxl.write does not exist
import jxl.write.WriteException;
                ^
src/GUI.java:20: error: package jxl.write.biff does not exist
import jxl.write.biff.RowsExceededException;
                     ^
src/GUI.java:395: error: cannot find symbol
    public static void performCreateWatchlist() throws BiffException, IOException, InterruptedException {
                                                       ^
  symbol:   class BiffException
  location: class GUI
src/GUI.java:440: error: cannot find symbol
    public static void performGetContactInformation(String username, String password, String path) throws InterruptedException, BiffException, IOException, RowsExceededException, HeadlessException, WriteException {
                                                                                                                                ^
  symbol:   class BiffException
  location: class GUI
src/GUI.java:440: error: cannot find symbol
    public static void performGetContactInformation(String username, String password, String path) throws InterruptedException, BiffException, IOException, RowsExceededException, HeadlessException, WriteException {
                                                                                                                                                            ^
  symbol:   class RowsExceededException
  location: class GUI
src/GUI.java:440: error: cannot find symbol
    public static void performGetContactInformation(String username, String password, String path) throws InterruptedException, BiffException, IOException, RowsExceededException, HeadlessException, WriteException {
                                                                                                                                                                                                      ^
  symbol:   class WriteException
  location: class GUI
src/GUI.java:91: error: local variable menuLabel is accessed from within inner class; needs to be declared final
                frame.remove(menuLabel);
                             ^
src/GUI.java:92: error: local variable centerPanel is accessed from within inner class; needs to be declared final
                frame.remove(centerPanel);
                             ^
src/GUI.java:103: error: local variable menuLabel is accessed from within inner class; needs to be declared final
                frame.remove(menuLabel);
                             ^
src/GUI.java:104: error: local variable centerPanel is accessed from within inner class; needs to be declared final
                frame.remove(centerPanel);
                             ^
src/GUI.java:115: error: local variable menuLabel is accessed from within inner class; needs to be declared final
                frame.remove(menuLabel);
                             ^
src/GUI.java:116: error: local variable centerPanel is accessed from within inner class; needs to be declared final
                frame.remove(centerPanel);
                             ^
src/GUI.java:182: error: local variable usernameField is accessed from within inner class; needs to be declared final
                username = usernameField.getText(); 
                           ^
src/GUI.java:183: error: local variable passwordField is accessed from within inner class; needs to be declared final
                password = passwordField.getText(); 
                           ^
src/GUI.java:184: error: local variable nameField is accessed from within inner class; needs to be declared final
                watchlistName = nameField.getText(); 
                                ^
src/GUI.java:185: error: local variable excelField is accessed from within inner class; needs to be declared final
                excelPath = excelField.getText(); 
                            ^
src/GUI.java:189: error: cannot find symbol
                } catch (BiffException | IOException | InterruptedException e2) {
                         ^
  symbol: class BiffException
src/GUI.java:252: error: local variable usernameField is accessed from within inner class; needs to be declared final
                username = usernameField.getText(); 
                           ^
src/GUI.java:253: error: local variable passwordField is accessed from within inner class; needs to be declared final
                password = passwordField.getText(); 
                           ^
src/GUI.java:254: error: local variable excelField is accessed from within inner class; needs to be declared final
                excelPath = excelField.getText(); 
                            ^
src/GUI.java:261: error: cannot find symbol
                } catch (RowsExceededException e1) {
                         ^
  symbol: class RowsExceededException
src/GUI.java:267: error: cannot find symbol
                } catch (BiffException e1) {
                         ^
  symbol: class BiffException
src/GUI.java:270: error: cannot find symbol
                } catch (WriteException e1) {
                         ^
  symbol: class WriteException
src/GUI.java:331: error: local variable usernameField is accessed from within inner class; needs to be declared final
                    performLinkedInHelp(usernameField.getText(), passwordField.getText());
                                        ^
src/GUI.java:331: error: local variable passwordField is accessed from within inner class; needs to be declared final
                    performLinkedInHelp(usernameField.getText(), passwordField.getText());
                                                                 ^
src/GUI.java:396: error: cannot find symbol
        ActiveIQ activeIQUser = new ActiveIQ();
        ^
  symbol:   class ActiveIQ
  location: class GUI
src/GUI.java:396: error: cannot find symbol
        ActiveIQ activeIQUser = new ActiveIQ();
                                    ^
  symbol:   class ActiveIQ
  location: class GUI
src/GUI.java:399: error: cannot find symbol
        ReadExcel excelReader = new ReadExcel(excelPath);
        ^
  symbol:   class ReadExcel
  location: class GUI
src/GUI.java:399: error: cannot find symbol
        ReadExcel excelReader = new ReadExcel(excelPath);
                                    ^
  symbol:   class ReadExcel
  location: class GUI
src/GUI.java:446: error: cannot find symbol
        ReadExcel excelReader = new ReadExcel(excelPath);
        ^
  symbol:   class ReadExcel
  location: class GUI
src/GUI.java:446: error: cannot find symbol
        ReadExcel excelReader = new ReadExcel(excelPath);
                                    ^
  symbol:   class ReadExcel
  location: class GUI
src/GUI.java:450: error: cannot find symbol
        Ascend run = new Ascend(); 
        ^
  symbol:   class Ascend
  location: class GUI
src/GUI.java:450: error: cannot find symbol
        Ascend run = new Ascend(); 
                         ^
  symbol:   class Ascend
  location: class GUI
src/GUI.java:470: error: cannot find symbol
        ArrayList<Product> output = new ArrayList<Product>(); 
                  ^
  symbol:   class Product
  location: class GUI
src/GUI.java:470: error: cannot find symbol
        ArrayList<Product> output = new ArrayList<Product>(); 
                                                  ^
  symbol:   class Product
  location: class GUI
src/GUI.java:493: error: cannot find symbol
        WriteExcel writer = new WriteExcel(); 
        ^
  symbol:   class WriteExcel
  location: class GUI
src/GUI.java:493: error: cannot find symbol
        WriteExcel writer = new WriteExcel(); 
                                ^
  symbol:   class WriteExcel
  location: class GUI
src/GUI.java:509: error: cannot find symbol
        LinkedIn run = new LinkedIn(); 
        ^
  symbol:   class LinkedIn
  location: class GUI
src/GUI.java:509: error: cannot find symbol
        LinkedIn run = new LinkedIn(); 
                           ^
  symbol:   class LinkedIn
  location: class GUI
Note: src/GUI.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
46 errors
Build step 'Execute shell' marked build as failure
Finished: FAILURE

Из моего исследования я обнаружил, что одним из возможных решений было бы использование проекта Maven. Однако у меня нет опыта работы с Maven, так что это будет сложный процесс. Есть ли другая команда оболочки, которую я должен использовать, чтобы сделать эту сборку и запустить правильно? Я попытался скомпилировать каждый файл исходного кода по отдельности, но это также вернуло ошибки:

javac src/Objects/Product.java
javac src/Reader/ReadExcel.java
javac src/Reader/WriteExcel.java
javac src/co/mitch/selenium/runnuer/ActiveIQ.java
javac src/co/mitch/selenium/runner/Ascend.java
javac src/co/mitch/selenium/running/LinkedIn.java
javac src/GUI.java
java GUI

Если нет способа заставить это работать с другой командой оболочки, какие опции у меня есть, чтобы запустить автоматизациюправильно на сервере? Заранее благодарим за любую помощь, которую вы можете оказать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...