Как выполнить тесты Selenium 2 в Jenkins

  • Я хотел бы иметь возможность использовать Selenium 2 с Дженкинсом.

  • Я новичок в обоих, поэтому, пожалуйста, извините мое невежество.

  • Я заметил следующий плагин для jenkins ЗДЕСЬ и установил его.

  • У меня есть базовый класс следующим образом:

    public class BaseTestClass {
    
    protected Properties myprops;
    protected String baseurl;
    protected WebDriver driver;
    protected boolean acceptNextAlert = true;
    protected StringBuffer verificationErrors = new StringBuffer();
    
    public BaseTestClass()
    {
        try
        {
            myprops = TestUtil.readProps("src/MyProps.properties");
            baseurl = myprops.getProperty("baseurl");
    
            driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), DesiredCapabilities.fireFox());
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }       
    }
    
    @Before
    public void setUp() throws Exception {
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    }
    
    @After
    public void tearDown() throws Exception {
        driver.quit();
        String verificationErrorString = verificationErrors.toString();
        if (!"".equals(verificationErrorString)) {
            fail(verificationErrorString);
        }
    }
    
    protected boolean isElementPresent(By by) {
        try {
          driver.findElement(by);
          return true;
        } catch (NoSuchElementException e) {
          return false;
        }
      }
    
      protected String closeAlertAndGetItsText() {
        try {
          Alert alert = driver.switchTo().alert();
          if (acceptNextAlert) {
            alert.accept();
          } else {
            alert.dismiss();
          }
          return alert.getText();
        } finally {
          acceptNextAlert = true;
        }
      }
    

У меня есть следующая конфигурация в Selenium Plugin для Jenkins:

enter image description here

..

enter image description here

Как только я попытаюсь построить проект и запустить тест селена Junit в Jenkins, он успешно работает, но сам тест не удался. (отлично работает при работе с ant из командной строки - и меняет значение WebDriver на:   driver = new FirefoxDriver();) - Использование селена RC

Это консольный вывод в Jenkins: enter image description here

EDIT. Я просто заметил, что вы можете архивировать выходной файл Junit.xml после сборки в Jenkins. Я получаю исключение класса, которое не найдено? Это странно, потому что, как я уже сказал, он просто отлично работает при использовании ant из командной строки.

Ошибка следующая:

<error message="com.loggedin.CCBreadCrumb" type="java.lang.ClassNotFoundException">
java.lang.ClassNotFoundException: com.loggedin.CCBreadCrumb at
java.net.URLClassLoader$1.run(URLClassLoader.java:366) at 
java.net.URLClassLoader$1.run(URLClassLoader.java:355) at
java.security.AccessController.doPrivileged(Native Method) at
java.net.URLClassLoader.findClass(URLClassLoader.java:354) at
java.lang.ClassLoader.loadClass(ClassLoader.java:423) at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at
java.lang.ClassLoader.loadClass(ClassLoader.java:356) at java.lang.Class.forName0(Native
Method) at java.lang.Class.forName(Class.java:186)
</error>

Заранее благодарим за любое направление или помощь, которую вы можете иметь!

Ответ 1

Думаю, я делал несколько ошибок. Чтобы разрешить Class Not Found Exception, я добавил следующее в ant build.xml - (помните, что я новичок Ant)

<target name="compile" depends="init" description="compile the source " >       
    <javac srcdir="src/" destdir="bin" classpathref="SeleniumCC.classpath"/>
</target>       

Это позволило мне скомпилировать классы java.

Затем мне пришлось обновить автономный сервер selenium до последней версии (selenium-server-standalone-2.xx.x.jar). Это находится в:

jenkins_home_directory\plugins\selenium\WEB-INF\lib

В последнее время я пытался использовать неправильную конфигурацию в подключаемом модуле selenium (я пытался использовать конфигурацию Custom RC node, мне нужна была конфигурация настраиваемого веб-драйвера node.)

enter image description here

ТАКЖЕ ПРИМЕЧАНИЕ. При запуске сервера Selenium на Red Hat мне пришлось установить и установить XVFB с плагином Jenkins Xvfb.

Я надеюсь, что это может помочь другим в будущем! Удачи!

Ответ 2

Хорошо, если вы намерены просто запустить селен script без Selenium Grid. Тогда вам не нужен плагин. Вам нужен только удаленный webdriver.

Чтобы запустить Selenium 2 от Jenkins, лучшим способом было бы обернуть процесс тестирования в pom.xml(если вы используете Maven), а затем просто создать новое задание в Maven, используя "Build a maven2/3 project", в Дженкинсе.