2013-04-17 36 views
12
  • Tôi muốn có thể sử dụng Selenium 2 với Jenkins.Cách thực hiện các thử nghiệm Selenium 2 trong Jenkins

  • Tôi mới làm quen với cả hai vì vậy hãy tha thứ cho bất kỳ sự thiếu hiểu biết nào của tôi.

  • Tôi nhận thấy plugin sau cho jenkins HERE và đã cài đặt plugin.

  • Tôi có một lớp cơ sở như sau:

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

tôi có cấu hình sau trên Selenium Plugin cho Jenkins:

enter image description here

..

enter image description here

Khi tôi cố gắng xây dựng dự án và chạy thử nghiệm Junit selenium trong Jenkins, nó xây dựng thành công, nhưng thử nghiệm nó tự thất bại. (Chỉ hoạt động tốt khi chạy với kiến ​​từ dòng lệnh - và thay đổi WebDriver tới: driver = new FirefoxDriver();) - Sử dụng selen RC

Đây là giao diện điều khiển đầu ra trong Jenkins: enter image description here

EDIT: Tôi chỉ nhận thấy bạn có thể lưu trữ tập tin đầu ra Junit .xml sau khi xây dựng trong Jenkins. Tôi nhận được một lớp học không tìm thấy ngoại lệ? Điều này là lạ bởi vì như tôi đã nói, nó xây dựng tốt khi sử dụng ant từ dòng lệnh.

Các lỗi như sau:

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

Cảm ơn trước cho bất kỳ hướng nào hay giúp bạn có thể có!

Trả lời

5

Tôi nghĩ rằng tôi đã phạm một số sai lầm. Để giải quyết Class Not Found Exception Tôi được thêm vào sau để kiến ​​của build.xml - (nhớ Tôi mới Ant)

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

này có các lớp học java của tôi biên soạn.

Sau đó, tôi đã phải cập nhật các máy chủ selen độc lập để phiên bản mới nhất (selenium-server-standalone-2.xx.x.jar) này tọa lạc tại:

jenkins_home_directory\plugins\selenium\WEB-INF\lib

ngoái, tôi đã cố gắng để sử dụng cấu hình sai trong các plug-in selen (tôi đã cố gắng sử dụng một cấu hình nút Tuỳ chỉnh RC, những gì tôi cần là một cấu hình nút điều khiển Tuỳ web)

enter image description here

CŨNG LƯU Ý:. Khi ru nning Selenium Server trên Red Hat Tôi đã phải thiết lập và cài đặt XVFB với plugin Jenkins Xvfb.

Tôi hy vọng điều này có thể giúp ích cho người khác trong tương lai! Chúc may mắn!

+0

Tôi cũng gặp sự cố khi tích hợp Selenium 2 + Jenkins. Tôi có thể chạy thử nghiệm selen của tôi trong jenkins. Nhưng tôi không thể khởi động trình duyệt thông qua jenkins. Nó chạy như trình duyệt không đầu. Tôi có thể biết thời tiết có thể làm được không? Nếu có xin vui lòng chia sẻ làm thế nào để làm điều đó. Xin vui lòng chia sẻ nếu bạn có hướng dẫn tốt đẹp. – Manigandan

+0

Có, tôi đã có thể làm điều đó với firefox trên cả MAC OSX 10.8.3 và Windows 7. Bạn phải sử dụng cấu hình nút trình điều khiển web tùy chỉnh như tôi đã nói ở trên và nó sẽ khởi chạy broswer nếu bạn đã thiết lập một lưới selen với firefox được cấu hình. Tôi không thể tìm thấy bất kỳ hướng dẫn tốt về điều này. Chúc may mắn! – Curt

1

Vâng, nếu ý định của bạn là chỉ cần chạy tập lệnh selen mà không có Lưới Selenium. Sau đó, bạn không cần bất kỳ plugin nào. Bạn sẽ chỉ cần webdriver từ xa.

Để khởi động Selenium 2 từ Jenkins, cách tốt nhất là quấn quá trình thử nghiệm vào tệp pom.xml (nếu bạn đang sử dụng Maven) và sau đó chỉ cần tạo một công việc mới trong Maven bằng cách sử dụng "Xây dựng dự án maven2/3 "trong Jenkins.

+0

Tôi muốn sử dụng Lưới Selenium và không có nó không phải là dự án Maven. – Curt

+0

Thay đổi dòng này 'driver = new RemoteWebDriver (URL mới ("http: // localhost: 4444/wd/hub"), DesiredCapabilities.internetExplorer()); 'to' driver = new RemoteWebDriver (URL mới ("http:// localhost: 5555/wd/hub "), DesiredCapabilities.internetExplorer());' và thử – Amey

+0

Thay đổi cổng thành 5555 không hoạt động và im xin lỗi đó là ảnh chụp màn hình cũ nơi tôi có IE làm cấu hình, tôi đã cập nhật màn hình đó được quay trong câu hỏi ban đầu. – Curt

Các vấn đề liên quan