Tôi đang cố gắng làm quen với Geb. Tôi đang cố gắng chạy nó từ bên trong Grails, nhưng điều đó hoàn toàn không quan trọng vì câu hỏi của tôi ở đây là cụ thể đối với Geb.Thông số đăng nhập Geb theo ví dụ
tôi có cấu trúc test
thư mục sau:
myapp/
<lots of stuff here>
test/
functional/
GebConfig.groovy
LogInLogOutSpec.groovy
pages/
LogInPage.groovy
DashboardPage.groovy
đâu LoginPage.groovy
là (rõ ràng) trang đăng nhập, và nơi DashboardPage
là nơi bạn nên được chuyển đến sau khi đăng nhập thành công. Trong thực tế, tôi có bộ lọc bảo mật tại chỗ sẽ kiểm tra xem liệu URL bạn đang cố truy cập có yêu cầu xác thực hay không. Nếu vậy, họ chuyển hướng bạn đến trang đăng nhập và sau khi đăng nhập thành công, hãy chuyển hướng bạn lại đến URL bạn đang cố gắng truy cập.
Đối với biện pháp tốt, đây là HTML mà bao gồm trang đăng nhập của tôi (một lần nữa, đây là Grails, do đó, một tập tin GSP là tự động chuyển đổi sang HTML trong thời gian chạy):
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<form action=“/myapp/auth/signIn" method="post">
<input type="hidden" name="targetUri" value="/dashboard" />
<table>
<tbody>
<tr>
<td>Username:</td>
<td><input type="text" name="username" value="" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="password" value="" /></td>
</tr>
<tr>
<td />
<td><input type="submit" value="Sign in" /></td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
Vì vậy, tôi cần một thử nghiệm Geb rằng :
- nỗ lực để đi đến Bảng điều khiển Page (trái phép)
- Thẩm tra, chúng tôi đã thay được chuyển đến đăng nhập trang
- Logs với cr tốt edentials
- thẩm tra chúng tôi không ở Dashboard Trang
Hơn nữa:
- Tôi muốn lựa chọn giữa: (a) hoặc dựa trên trình duyệt (Firefox hoặc Chrome) hoặc (b) trình duyệt không có đầu (mà tôi tin rằng là
HtmlUnitDriver
, nhưng sửa lỗi nếu tôi sai) - Tôi muốn thông tin đăng nhập được Geb sử dụng để được tiêm từ
GebConfig
tệp hoặc một số tham số bên ngoài (có lẽ là v env vars hoặc runtime args được cung cấp cho dòng lệnh Grails). Về cơ bản, tôi không muốn lưu trữ tên người dùng/mật khẩu trong mã thử nghiệm.
nỗ lực của tôi tốt nhất cho đến nay:
GebConfig.groovy
:
driver = {
// Again, or Firefox
ChromeProfile profile = new ChromeProfile()
Driver driverInstance = new ChromeDriver(profile)
driverInstace.manage().window().maximize()
driverInstance
}
baseNavigatorWaiting = true
atCheckWaiting = true
// Need to inject from some external process somehow, but make these
// available to test specs somehow.
username = System.env("USERNAME")
password = System.env("PASSWORD")
LogInLogOutSpec.groovy
:
import geb.spock.GerbReportingSpec
import spock.lang.*
import pages.*
@Stepwise
class LogInLogOutSpec extends GebReportingSpec {
String username
String password
/*
* Attempt to go to user dashboard, and confirm you are instead
* redirected to the login page. Login with good credentials,
* and verify you are now logged in and at the dashboard.
*/
def "successful login redirects to dashboard page"() {
when:
to DashboardPage
then:
"Login".equals($(".page-header").text())
when:
$("#login-form input[name=username]").value(username)
$("#login-form input[name=password]").value(password)
then:
"Dashboard".equals($(".page-header").text())
}
}
Tôi nghĩ tôi gần, nhưng điều này là rõ ràng là sai. Bất kỳ ý tưởng nào mà tôi sẽ gặp phải? Cảm ơn!
Tôi không thấy rằng bạn gửi biểu mẫu ở bất kỳ đâu, đó có thể là vấn đề. Nếu nó vẫn không hoạt động, tôi nghĩ rằng bạn phải thu hẹp nơi mà nó không dễ dàng giúp đỡ thêm. Ngoài ra, video gần đây này có thể giúp bạn với một số thực hành tốt nhất của GEB: https://www.youtube.com/watch?v=rpepX441E5g&feature=youtu.be – wwwclaes
Vâng, đã lâu rồi tôi đã làm một bài kiểm tra Geb như thế này nhưng wwwclaes nói suy nghĩ đầu tiên của tôi. Bạn đang gửi biểu mẫu đăng nhập ở đâu hoặc nhấp vào nút "Đăng nhập". –
Vì vậy, bạn không nói như thế nào là không. Firs điều tôi làm trong một tình huống như thế này là làm kịch bản thử nghiệm đơn giản nhất, trừu tượng nhất mà sẽ làm việc. Đừng trừu tượng Trang Đăng nhập hoặc Trang Bảng điều khiển thành một số cấu hình Geb đặc biệt. Đừng lo lắng về tên người dùng/mật khẩu đang ở trong cấu hình bên ngoài. Hack nó lên để "làm việc" cách đơn giản nhất có thể đầu tiên. Khi đã xong, hãy bắt đầu tái cấu trúc để sử dụng các tính năng Geb nâng cao hơn. –