2012-06-25 31 views
6

Tôi đang cố gắng chạy WebDriverJS trên trình duyệt, nhưng tài liệu hơi mơ hồ về cách làm cho nó kiểm soát trình duyệt máy chủ. Ở đây, nó nói:Xác định ID phiên từ WebDriverJS

Khởi chạy trình duyệt để chạy thử nghiệm WebDriver đối với trình duyệt khác là một số dư thừa (so với chỉ sử dụng nút). Thay vào đó, việc sử dụng WebDriverJS trong trình duyệt được dành cho việc tự động hóa trình duyệt thực sự chạy tập lệnh . Điều này có thể được thực hiện miễn là URL cho máy chủ và ID phiên cho trình duyệt được biết. Trong khi những giá trị này có thể được truyền cho người xây dựng trực tiếp, họ cũng có thể được xác định bằng cách sử dụng wdurl và wdsid "biến môi trường", được phân tích từ dữ liệu truy vấn URL của trang tải của:

<!-- Assuming HTML URL is /test.html?wdurl=http://localhost:4444/wd/hub&wdsid=foo1234 --> 
    <!DOCTYPE html> 
    <script src="webdriver.js"></script> 
    <input id="input" type="text"/> 
    <script> 
     // Attaches to the server and session controlling this browser. 
     var driver = new webdriver.Builder().build(); 

     var input = driver.findElement(webdriver.By.tagName('input')); 
     input.sendKeys('foo bar baz').then(function() { 
     assertEquals('foo bar baz', 
      document.getElementById('input').value); 
     }); 
    </script> 

Tôi muốn để mở trang thử nghiệm của tôi từ Node.js, sau đó chạy các lệnh có trong kịch bản phía máy khách. Tuy nhiên, tôi không biết làm thế nào tôi có thể trích xuất ID phiên (tham số truy vấn wdsid) khi tôi tạo phiên. Có ai có ý kiến ​​gì không?

Trả lời

7

Cuối cùng đã tìm ra sau nhiều thử nghiệm và đọc qua mã nguồn WebDriverJS.

var webdriver = require('./assets/webdriver'); 

var driver = new webdriver.Builder(). 
    usingServer('http://localhost:4444/wd/hub'). 
    withCapabilities({ 
     'browserName': 'chrome', 
     'version': '', 
     'platform': 'ANY', 
     'javascriptEnabled': true 
    }). 
    build(); 

var testUrl = 'http://localhost:3000/test', 
    hubUrl = 'http://localhost:4444/wd/hub', 
    sessionId; 

driver.session_.then(function(sessionData) { 
    sessionId = sessionData.id; 
    driver.get(testUrl + '?wdurl=' + hubUrl + '&wdsid=' + sessionId); 
}); 

driver.session_ trả về một Đối tượng hứa hẹn chứa dữ liệu phiên và thông tin khác khi khởi tạo. Sử dụng .then (callback (sessionData)) sẽ cho phép bạn thao tác dữ liệu theo ý muốn.

+1

Nếu điều này đã làm việc tại một thời điểm, nó không xuất hiện như vậy bây giờ. Tôi thấy nó đã được chuyển đến sessionData.id_ – Lukus

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