Hướng dẫn how does selenium webdriver handle javascript errors? - selenium webdriver xử lý lỗi javascript như thế nào?

Hướng dẫn how does selenium webdriver handle javascript errors? - selenium webdriver xử lý lỗi javascript như thế nào?
Được đăng bởi Martijn Versluis vào ngày 24-4-2019

TL; DR Giải pháp cuối cùng (được tái cấu trúc) ở dưới cùng. The final (refactored) solution is at the bottom.

Nhà phát triển web Ruby/Rails hiện đại thường phải đối phó với một mặt trận phức tạp, điều đó có nghĩa là thử nghiệm selenium vượt qua không đảm bảo ứng dụng web hoạt động 100%. Có thể có các cảnh báo hoặc lỗi của JavaScript xuất hiện trong trình duyệt không đầu, nhưng chúng không thể nhìn thấy trong đầu ra thử nghiệm.

Tất nhiên, có thể có một bài kiểm tra frontend (đơn vị) để bắt những lỗi đó. Nhưng để đảm bảo một tính năng thực sự hoạt động từ đầu đến cuối, bạn cần một thông số kỹ thuật (kiểm tra tích hợp) bao gồm toàn bộ ngăn xếp. Phải có một cách để xử lý các lỗi phía trước với selenium?

🎉 Có!

Bạn phải đào một chút vào đối tượng

1
2
3
4
5
6
7
0:

Nó là một tập hợp các đối tượng

1
page.driver.browser.manage.logs.get(:browser)
1
2
3
4
5
6
7
1. Hãy cùng xem những gì trong đó. Dưới đây là một bản in đẹp của
1
2
3
4
5
6
7
2. Thuộc tính
1
2
3
4
5
6
7
3 là những gì chúng tôi muốn hiển thị trong đầu ra thử nghiệm của chúng tôi.

Vì vậy, theo mặc định, nhật ký aren thực sự hữu ích. Hãy để xem những gì xảy ra khi có lỗi frontend. Chúng tôi sẽ ngẫu nhiên gọi chức năng

1
2
3
4
5
6
7
[#
  ....
  ]
1
2
3
4
5
6
7
4, mà chúng tôi đã xác định. Sau đó, chúng tôi kiểm tra các bản ghi một lần nữa. Bây giờ nó chứa một mục cho lỗi JavaScript của chúng tôi:

Mục nhập này là thông tin thực tế có giá trị. Nếu có tồn tại một mục như vậy, thử nghiệm selenium sẽ thất bại. Lưu ý phần

1
2
3
4
5
#
1
2
3
4
5
6
7
5. Chúng ta thực sự có thể lọc các nhật ký và chọn các mục trong đó
1
2
3
4
5
6
7
6. Hãy để tạo ra
1
2
3
4
5
6
7
7 của riêng chúng tôi!

Đầu tiên, chúng tôi chỉ chọn các lỗi nghiêm trọng và quay lại sớm khi không có:

________số 8

Sau đó, chúng tôi định dạng các mục nhập bằng cách lấy

1
2
3
4
5
6
7
8
9
10
11
12
13
class SeleniumBrowserErrorReporter
  def initialize(page)
    self.page = page
  end

  def report!
    # The magic needs to happen here...
  end

  private

  attr_accessor :page
end
logs = page.driver.browser.manage.logs.get(:browser)
severe_errors = logs.select { |log| log.level == 'SEVERE' }
return if severe_errors.none?

Sau đó, chúng tôi định dạng các mục nhập bằng cách lấy

1
2
3
4
5
6
7
3 và tham gia với chúng với một dòng trống ở giữa:

________số 8

logs = page.driver.browser.manage.logs.get(:browser)
severe_errors = logs.select { |log| log.level == 'SEVERE' }
return if severe_errors.none?

page.driver.browser.manage.logs.get(:browser)
2

page.driver.browser.manage.logs.get(:browser)
3

page.driver.browser.manage.logs.get(:browser)
4

page.driver.browser.manage.logs.get(:browser)
5

Có một điều khó chịu: các ký tự Newline (

1
2
3
4
5
6
7
3 và tham gia với chúng với một dòng trống ở giữa:

page.driver.browser.manage.logs.get(:browser)
1
Chúng tôi đính kèm phóng viên trong cấu hình RSPEC của chúng tôi:Thất bại trong thử nghiệm trông như thế này:

page.driver.browser.manage.logs.get(:browser) 6

page.driver.browser.manage.logs.get(:browser)
7

Giải pháp cuối cùng

page.driver.browser.manage.logs.get(:browser) 8

page.driver.browser.manage.logs.get(:browser)
9

Gói (lại

Selenium xử lý các lỗi JavaScript như thế nào?

Loại lỗi này xuất hiện tại tab Console khi mở các công cụ nhà phát triển trong trình duyệt. Điều này có thể xảy ra do một số vấn đề chức năng trong trang hoặc do nhật ký bổ sung có thể gây ra vấn đề về hiệu suất. Chúng ta có thể xử lý các lỗi JavaScript với đối tượng trình điều khiển và phương thức quản lý.with the driver object and manage method.

WebDriver có thể xử lý cảnh báo JavaScript không?

WebDriver có thể lấy văn bản từ cửa sổ bật lên và chấp nhận hoặc bác bỏ các cảnh báo này..

Làm thế nào để bạn giải quyết các lỗi JavaScript?

Khắc phục lỗi JavaScript..
Mở trang web demo lỗi JavaScript được báo cáo trong công cụ bảng điều khiển trong một cửa sổ hoặc tab mới ..
Nhấp chuột phải vào bất cứ nơi nào trong trang web và sau đó chọn Kiểm tra.Hoặc, nhấn F12.....
Nhấp vào nút Bảng điều khiển mở để xem lỗi ở phía trên bên phải.....
Nhấp vào lỗi ..

Selenium xử lý các cửa sổ bật lên JavaScript như thế nào?

Dưới đây là các hoạt động chính có thể được thực hiện trên cảnh báo JavaScript trong Selenium WebDriver:..
Chấp nhận () Điều này giống như nhấn nút OK OK trong cửa sổ bật lên cảnh báo ..
sendKeys () Đây là để cảnh báo nhanh chóng yêu cầu đầu vào từ người dùng.....
bỏ qua() ... .
text().

1
2
3
4
5
6
7
9) được thoát ra. Hãy để thay thế chúng bằng các dòng mới thực tế:
Bây giờ chúng tôi có một báo cáo tốt đẹp, giống như bảng điều khiển trình duyệt của chúng tôi sẽ hiển thị nó:Cuối cùng, tôi đã muốn tái cấu trúc một chút, bởi vì phương pháp
[#
  ....
  ]
0 của chúng tôi phát triển lớn và không thể đọc được một chút.