2015-01-09 26 views
6

Điều nhỏ nhặt để kiểm tra xem một phần tử có phải là có thể nhấp với Thước đo không, nhưng tôi đang cố gắng gãi đầu để tìm cách kiểm tra xem phần tử là không phải là có thể nhấp hay không.Làm cách nào để kiểm tra xem một phần tử có thể không nhấp được bằng Thước đo góc không?

Tôi đã cố gắng bọc chức năng nhấp trong một lần thử/nắm bắt sao cho khi có lỗi xảy ra khi cố gắng nhấp vào nó sẽ bắt được và cho phép kiểm tra; tuy nhiên, điều này không hoạt động.

Đây là mã của tôi đối với phương pháp mà không được kiểm tra:

return this.shouldSeeDisabledFunds() 
    .then(function() { 
     var clickable = true; 

     try { 
      fundsElem.first().click(); 
     } catch (e) { 
      clickable = false; 
      console.log(clickable); 
     } finally { 
      console.log(clickable); 
     } 

     console.log(clickable); 

     // All the way through, clickable is still true, and the console log in the 
     // catch is not called. I believe this is because click is asynchronous. 
    }) 
; 
+1

Có phải 'click()' không trả lại lời hứa? –

+0

Vâng, đúng vậy. Tôi đã thực sự tìm ra nó ngay sau khi nhận ra điều đó. Tôi sẽ đăng một câu trả lời bao gồm nó. – Seer

Trả lời

8

Tôi đã tìm thấy một giải pháp mà làm việc cho việc này. Khi click() trả về lời hứa, bạn có thể chỉ cần .then tắt nó và ném vào trình xử lý nhấp chuột thành công và ghi đè trình xử lý bắt để không thực hiện việc kiểm tra nếu phần tử không thể nhấp được.

return this.shouldSeeDisabledFunds() 
    .then(function() { 
     fundsElem.first().click() 
      .then(
       function() { 
        throw "Can click Funds element that should be disabled"; 
       }, 
       function() {} 
      ) 
     ; 
    }) 
; 
+0

Cần lưu ý rằng giải pháp này có tác dụng phụ khi thực sự nhấp vào phần tử. Sẽ thật tuyệt nếu có một giải pháp có thể trả lại thông tin mà không có phản ứng phụ. –

1

Có lẽ không áp dụng trong trường hợp của bạn, nhưng một cách tốt hơn để kiểm tra xem một phần tử là nhấp được là kiểm tra nếu nó là cả nhìn thấy và được kích hoạt: elem.isDisplayed()elem.isEnabled(). Bằng cách này bạn không vô tình bấm vào nút khi bạn không phải.

FYI, sẽ có một thư viện sắp tới để giúp đỡ với các trường hợp như thế này: https://github.com/angular/protractor/pull/1703

+3

có những trường hợp khác có thể khiến một người không thể nhấp chuột được, như nếu một hộp thoại phương thức được mở trên đầu trang, sau đó ngay cả khi phần tử được hiển thị và được kích hoạt, sẽ không thể nhấp được. –

+0

Ngoài ra con trỏ-sự kiện: none; willl làm cho một phần tử không thể nhấp vào (ngoại lệ thước đo góc), nhưng elem.isEnabled() sẽ trả về true – Olivvv

-1

Để xác minh Clickable:. element.isDisplayed() Tobe (true)

Không Clickable: yếu tố . isDisplayed(). toBe (sai)

Làm việc cho tôi.

+0

Một phần tử có thể được hiển thị nhưng được bao phủ bởi một phần tử bán mờ khác mà sẽ nhận được nhấp chuột. – trevorade

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