2014-01-30 6 views
1

Я очень новичок в Selenium and Automation. Используя Selenium IDE и мои общие знания Java, я смог сделать серию тестовых примеров в Eclipse, которые запускаются на JUnit. Теперь мой тест выполняется, когда я нахожусь в затмении, и нажмите [run]. Я хотел бы импортировать эти тестовые примеры в Jenkins/Hudson. Есть два способа, которые я предпочел бы сделать CI.Как получить тесты Selenium/WebDriver на Jenkins?

  1. Запланируйте время (раз в неделю), чтобы пройти тесты и отправить электронное сообщение результата.

  2. Загрузите свои тестовые примеры в репозиторий на GitHub и при внесении изменений в репозиторий, запустите тесты и/или по расписанию (один раз в неделю).

Ive честно попытался найти учебники (видео/документы), но все они кажутся очень неясными. Просто чтобы привести пример, я не знаю, что такое build.xml или POM.

Лучше ли это делать с помощью плагина Jenkins или с помощью ANT или Maven? Если да, то какие вещи мне нужно добавить/изменить в моем коде, чтобы это произошло, и настроить в Jenkins.

Мой пример кода ниже:

package Profile; 

import java.util.concurrent.TimeUnit; 
import java.util.regex.Pattern; 
import java.util.concurrent.TimeUnit; 
import org.junit.*; 
import static org.junit.Assert.*; 
import org.openqa.selenium.*; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.interactions.Actions; 
import org.openqa.selenium.support.ui.Select; 
import com.opera.core.systems.scope.protos.ExecProtos.ActionList.Action; 

public class P_ProfileChangeTestCase { 
    private WebDriver driver; 
    private String baseUrl; 
    private StringBuffer verificationErrors = new StringBuffer(); 

//Before the test begins, creates a new webdriver and sets the base url 
    @Before 
    public void setUp() throws Exception { 
    driver = new FirefoxDriver(); 
    baseUrl = "http://www.test.com/"; 
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

    } 

    @Test 
    public void testOpen() throws Exception { 
    System.out.println("**Starting Profile**"); 
    driver.get(baseUrl); 
//Click LogIn 
System.out.println("Clicking Log In"); 
driver.findElement(By.cssSelector("div.button.login > a.link")).click(); 
//Enter User name 
System.out.println("Entering Username"); 
driver.findElement(By.xpath("//input[@id='login']")).sendKeys("TEST"); 
//Enter Password 
System.out.println("Entering Password"); 
driver.findElement(By.xpath("//input[@id='login_password']")).sendKeys("PW"); 
//Click LogIn Button 
System.out.println("Submit Log In"); 
driver.findElement(By.className("login-button")).click(); 
//Verify user name login by echo name to console 
System.out.println("Verify User Log In"); 
String text = driver.findElement(By.cssSelector("span.username")).getText(); 
System.out.println("Username is :" + text); 
//////////////////////// 
//Click on Edit Profile 
System.out.println("Clicking on Edit Profile Button"); 
driver.findElement(By.cssSelector("div.button.login")).click(); 
driver.findElement(By.xpath("//div[@id='mlg-header']/div/div[3]/div/div[7]/div/div[2]/a")).click(); 
//Change description in profile 
System.out.println("Editing the Interests section of profile"); 
driver.findElement(By.name("interests")).clear(); 
driver.findElement(By.name("interests")).sendKeys("Edit Profile in Selenium Eclipse"); 
//Update Profile 
System.out.println("Click on submit to change profile"); 
driver.findElement(By.cssSelector("input[type=\"submit\"]")).click(); 
//Verify that update has been applied to profile 
System.out.println("Verifing that change has been made"); 
assertEquals("Profile has been updated.", driver.findElement(By.cssSelector("b > b")).getText()); 
//Console Output of Assert Statement Above 
System.out.println("Profile has been updated!"); 
System.out.println("**Profile Complete!**"); 

    } 

    @After 
    public void tearDown() throws Exception { 
driver.quit(); 
String verificationErrorString = verificationErrors.toString(); 
if (!"".equals(verificationErrorString)) { 
    fail(verificationErrorString); 
    } 
    } 
    private boolean isAlertPresent() { 
    try { 
     driver.switchTo().alert(); 
     return true; 
    } catch (NoAlertPresentException e) { 
     return false; 
    } 
     } 
} 
+0

исправления! Я создал проект maven, и в качестве java-файла у меня есть следующий код выше. в моем pom xml у меня есть зависимость selenium и junit – user2683183

ответ

5

Основываясь на вашей информации, вы создаете автоматизацию селена, используя базу проекта maven. В этом случае, если вы хотите использовать Jenkins в качестве своего CI, выполните следующие действия:

  1. Убедитесь, что вы уже установили maven и настроили дом maven в своей системе.
  2. Создайте новый товар с Создайте бесплатный проект программного обеспечения. enter image description here
  3. Перейти к каталогу .jenkins в вашей системе. Если вы используете mac, он будет размещен внутри дома. Скопируйте и вставьте свой проект селена внутри папки задания автоматизации (.jenkins/jobs/Automation/рабочее пространство). Папка рабочего пространства должна создаваться вручную.
  4. После создания задания/проекта перейдите в Управление исходным кодом и установите его как none (я предполагаю, что в настоящее время вы используете свой селеновый код из своей локальной системы). Если вы хотите, чтобы захватить код из репозитория Git, вам нужно добавить GIT плагин первым: Дженкинс ->Управление Дженкинс ->Управление Плагины -> нажмите на Доступные вкладка -> поиск Github Plugin.
  5. Проверить Построить периодически под Построить триггеры и установить его (0 7 * * *). Это означает, что ваша автоматизация будет автоматически запускаться 7 раз в день.
  6. Добавить сборку step для запуска вашей автоматизации через команду maven mvn clean test. Пожалуйста, выберите Выполнить Shell, если вы используете Mac/Linux или выбрать Execute Batch для Windows Command, если вы используете систему Windows,.
  7. Если вы хотите отправить по электронной почте в результате автоматизации, необходимо установить E-mail Ext плагин в Дженкинс-Manage плагин и настроить редактируемые уведомления по электронной почте. Если у вас есть вложение, результат проекта maven обычно помещается в целевую папку. Ниже я приведу вам пример zip-файла, который у меня есть в целевой папке.
  8. Сохраните ваши джинсы/проект. enter image description here
  9. Настройте отправителя электронной почты: Идите в Jenkins -> Управление Jenkins -> Настройте систему и выполните действия, указанные ниже. enter image description here
  10. Наконец, построить свой Дженкинс проект/работу: enter image description here
  11. Позвольте мне знать, если вы все еще имеете любой вопрос;)
0

На основании отправленного кода, и тот факт, что вы используете Maven, я бы сказал, «МВН чистый тест» будет выполнять все модульные тесты. Поэтому создайте мэн-проект в Jenkins (для этого вам понадобится плагин maven в Jenkins), а в конфигурации «чистый тест», как ваши цели maven, будут исполняться проектом jenkins.

Посмотрите на большую картинку здесь, хотя ваши тесты аннотируются как единичные тесты, но они не обладают характеристиками модульных тестов. Во-первых, модульные тесты должны Mock внешних зависимостей.

Смежные вопросы