2015-02-23 17 views
7

Tôi xin lỗi nếu đây là câu hỏi mới, chỉ cần bắt đầu với thử nghiệm tự động hóa web.Tìm nút bằng className với Thước đo

Tôi muốn kiểm tra trang màn hình đăng nhập. Việc tìm kiếm các trường văn bản tên và mật khẩu thật dễ dàng (chỉ cần sử dụng by.model), tuy nhiên tôi gặp sự cố khi tìm nút đăng nhập bằng tập lệnh của tôi.

Tôi googled xung quanh và tôi sẽ có thể tìm thấy một yếu tố bởi className sử dụng yếu tố (by.css (.className)), tuy nhiên điều này không hoạt động và tôi luôn nhận được NoSuchElementError: No element found using locator: By.cssSelector(".btn btn-lg btn-primary btn-block").

Bất kỳ ý tưởng nào tôi đang làm sai?

Cảm ơn bạn trước,

LoginBtn HTML:

<button class="btn btn-lg btn-primary btn-block" type="submit" ng-disabled="loading">login</button> 

Mã của tôi:

describe('Test login', function() { 
    var username = element(by.model('formData.email')); 
    var password = element(by.model('formData.password')); 
    var loginBtn = element(by.css('.btn btn-lg btn-primary btn-block')); 


    beforeEach(function() { 
    browser.get('some site'); //hidden on purpose 
    }); 

    it('should have a title', function() { 
     username.sendKeys(1); 
     password.sendKeys(2); 
     loginBtn.click(); 


    }); 


}); 

Trả lời

12

Nếu bạn đang kiểm tra cho nhiều lớp, tách chúng bằng dấu chấm:

by.css('.btn.btn-lg.btn-primary.btn-block') 

Mặc dù, tôi muốn tìm ra nút bằng văn bản - trông đáng tin cậy hơn và dễ đọc:

by.xpath('//button[. = "login"]') 

Ngoài ra, suy nghĩ về việc phân công các nút một id (nếu điều này là dưới sự kiểm soát của bạn) gán cho giảm bớt quá trình thử nghiệm:

<button id="submitButton" class="btn btn-lg btn-primary btn-block" type="submit" ng-disabled="loading">login</button> 

Sau đó, nó sẽ được dễ dàng như:

by.id('submitButton') 
+0

Cảm ơn bạn. Cả hai tùy chọn đều hoạt động. :) – r3x

2

Bạn cũng có thể chỉ sử dụng một lớp học để tìm ra định vị

by.css('.btn-primary')

bởi tên lớp

by.className('btn-primary')

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