2015-11-30 19 views
10

Hiện tại có kiểm tra một phần đầu cuối để nhập tên người dùng/mật khẩu và nhấp vào 'đăng nhập'.Thước đo e2e Các thử nghiệm Đăng nhập Chuyển hướng

Điều đó thành công, nhưng kết thúc tại trang "cảm ơn bạn đã đăng nhập", thay vì được chuyển hướng đến 'cổng thông tin tài khoản' hoặc 'trang tổng quan', cách tôi có thể đăng nhập thông qua trình duyệt. \

Mới đối với dự án này nhưng chúng tôi đang sử dụng OAuth.

Câu hỏi chính: Điều này có vẻ giống như nhu cầu về chế nhạo http không?

Thông tin chi tiết:

spec.js

describe('login page', function() { 
    browser.driver.get('http://url.path/login'); 
    it('should render login page', function() { 

     // Checking the current url 
     var currentUrl = browser.driver.getCurrentUrl(); 
     expect(currentUrl).toMatch('/login'); 
    }); 
    it('should sign in', function() { 

     // Find page elements 
     var userNameField = browser.driver.findElement(By.id('username')); 
     var userPassField = browser.driver.findElement(By.id('password')); 
     var userLoginBtn = browser.driver.findElement(By.id('loginbtn')); 

     // Fill input fields 
     userNameField.sendKeys('[email protected]'); 
     userPassField.sendKeys('1234'); 

     // Ensure fields contain what we've entered 
     expect(userNameField.getAttribute('value')).toEqual('[email protected]'); 
     expect(userPassField.getAttribute('value')).toEqual('1234'); 

     // Click to sign in - waiting for Angular as it is manually bootstrapped. 
     userLoginBtn.click().then(function() { 
     browser.waitForAngular(); 
     expect(browser.driver.getCurrentUrl()).toMatch('/success'); 
     }, 10000); 
    }); 
}); 

Nếu tôi nhanh tay click vào cửa sổ thử nghiệm, tôi có thể thấy nó đạt đến thành công trang 'thành công' - nhưng nó không chuyển hướng đến bảng điều khiển (nó chuyển hướng khi bạn đăng nhập theo cách thủ công, thông qua trình duyệt). Làm cách nào tôi có thể tiếp tục thử nghiệm này để duy trì trạng thái đăng nhập và truy cập trang tổng quan như người dùng?

// Mới đối với dự án, góc cạnh và thước đo góc.

EDIT - Tóm tắt này một chút:

  • Tôi muốn thước đo để bắt đầu kiểm tra trên trang /login
  • thước đo nên tìm và điền thông tin username và mật khẩu, sau đó nhấp vào Đăng nhập
  • Thước đo thành công đăng nhập, để xem trang /thankyou, sau đó chuyển hướng ngay đến người dùng /trang tổng quan pa của người dùng ge
  • Có thể tôi đang bỏ lỡ một bước, chúng ta có cần chuyển hướng thủ công trong các thử nghiệm Thước đo không?

    đó là một chuyển hướng nhanh chóng để /bảng điều khiển thước đo không đạt các trang bảng điều khiển -

(Khi một người dùng tay đăng nhập vào thông qua trình duyệt, họ không thấy trang /thankyou..

Trả lời

4

bài đăng của bạn thiếu thông tin nhưng tôi sẽ cố gắng làm cho một giả định:.

tôi nghi ngờ rằng "nhờ bạn đang đăng nhập" của bạn làm cho javascript chuyển hướng sau một thời gian chờ

Vì vậy, sau khi bạn nhấp vào "Đăng nhập", trình duyệt sẽ tải trang "cảm ơn bạn đã đăng nhập" và vì tham số thứ hai là .then() không có gì, browser.waitForAngular() không thành công do không có góc trên trang đó.

Bạn nên cố gắng sử dụng một cái gì đó giống như browser.driver.wait() với một thời gian chờ hợp lý để phát hiện sự thay đổi url (được mô tả ở đây: https://github.com/angular/protractor/issues/610) và kích hoạt browser.waitForAngular() sau khi trình duyệt được để /success trang.

+0

Khi tôi chạy mã từ dung dịch trên trang mà bạn liên kết - thước đo nói: "Không: không xác định không phải là một chức năng". Có vẻ như nó không thành công ở hàm 'compareCurrentUrl'. Một ví dụ về cách tôi sử dụng chức năng có thể tìm thấy ở đây https://jsfiddle.net/s3tbfkwy/ – bruh

1

Bạn đã thử sử dụng chờ đợi rõ ràng chưa?

return browser.driver.wait(function() { 
     return browser.driver.getCurrentUrl().then(function(url) { 
      return /success/.test(url); 
     }); 
    }, 10000); 

Mã của bạn sẽ là như thế:

// Click to sign in - waiting for Angular as it is manually bootstrapped. 
    userLoginBtn.click(); 
    return browser.driver.wait(function() { 
     return browser.driver.getCurrentUrl().then(function(url) { 
      return /success/.test(url); 
     }); 
    }, 10000); 
+0

Điều này hữu ích, ngoại trừ dòng trả về phải được thay đổi thành: return url === [DESIRED URL]; – Sam

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