2009-08-23 39 views
8

giả sử khách hàng bắt đầu phiên selen trên máy chủ RC, nhưng ở giữa phiên, máy khách "đã biến mất". Trình duyệt sẽ vẫn mở, và cuối cùng, sau khi đủ các phiên giảm như vậy, sẽ có đủ trình duyệt "mồ côi" để làm chậm máy tính.Cách đóng trình duyệt trên máy chủ selen RC bị mất ứng dụng khách

  • Làm cách nào để đảm bảo các trình duyệt đó bị đóng?
  • Tại sao không có phần "tiếp tục hoạt động" trong giao thức để đảm bảo ứng dụng vẫn đáp ứng và nếu không giết phiên?
  • +0

    Bạn phải chấp nhận câu trả lời khi bạn cho rằng câu hỏi của mình đã được trả lời ... – Santi

    +0

    Trên lưu ý tương tự, tôi có thể sử dụng lại các phiên trình duyệt hiện tại không? :) – Nayn

    +0

    @Nayn - có bạn có thể! :) Có một đối số bạn có thể gửi selenium RC khi nó bắt đầu: -browserSessionReuse – olamundo

    Trả lời

    14

    Bất kỳ phiên bản trình duyệt nào có session_id bạn có thể lưu trữ. Python dụ:

    >>> import selenium 
    >>> browser = selenium.selenium("localhost",4444, "*firefox", "http://www.santiycr.com.ar") 
    >>> browser.start() 
    >>> browser.sessionId 
    u'b4ad1f1d624e44d9af4200b26d7375cc' 
    

    Vì vậy, nếu bạn lưu trữ những sessionId trong một tập tin khi bắt đầu thử nghiệm của bạn và sau đó loại bỏ nó khi xét nghiệm của bạn kết thúc, bạn sẽ có một log file với phiên cho bài kiểm tra mà không kết thúc đúng.

    Bây giờ sử dụng cron, hoặc bất kỳ thực hiện thường xuyên, bạn có thể đọc tập tin đó, lặp qua các sessionIds lưu giữ trong nó và mở url sau (sử dụng một trình duyệt hay thậm chí là một thư viện http cho ngôn ngữ lập trình của bạn):

    http://localhost:4444/selenium-server/driver/?sessionId=THE-SESSION-ID&cmd=testComplete

    Điều đó cần thực hiện thủ thuật.

    Chỉnh sửa: Tôi thấy câu hỏi này rất thú vị đã tạo bài đăng trong blog của tôi về giải pháp. Nếu bạn là một chàng trai python bạn sẽ tìm thấy nó thú vị: http://www.santiycr.com.ar/djangosite/blog/posts/2009/aug/25/close-remaining-browsers-from-selenium-rc

    +0

    Ví dụ tốt Santi – AutomatedTester

    +0

    Đối với trình duyệt Firefox, bạn có thể tìm sessionid bằng cách kiểm tra tên thư mục hồ sơ. Trên một hệ thống không giống như, 'ps axe | grep firefox-bin' sẽ trả về một cái gì đó như '12345? 1:00/usr/lib/iceweasel/firefox-bin -profile/tmp/customProfileDir '. – Tgr

    2

    Bạn cũng có thể chỉ giết chết quá trình:

    Windows:

    taskkill /f /im iexplore.exe
    taskkill /f /im firefox.exe

    * nix:

    for i in `ps -A | grep firefox | awk '{print $1}'`; do kill -9 $i; done 
    
    +0

    điều này sẽ giết tất cả các firefox, không chỉ là "zombie" một. vì vậy nếu, ví dụ, bạn chạy hai rc trên cùng một máy (không phải là không), bạn có thể kết thúc lên một ff được sử dụng bởi các RC khác. – olamundo

    2
    >>> browser.stop() 
    

    Giống như Santi giải thích ở trên.

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