Computer >> Máy Tính >  >> Lập trình >> Ruby

Cách kiểm soát trình duyệt web từ Ruby với Watir

Bạn có biết rằng bạn có thể kiểm soát trình duyệt web của mình bằng Ruby không?

Đá quý Watir cho phép bạn làm điều này.

Và nó đi kèm với toàn bộ sức mạnh của các trình duyệt hiện đại :

  • Bạn có thể chụp ảnh màn hình của vùng hiển thị của trang
  • Bạn có thể chạy javascript trên bất kỳ trang nào mà không cần phải mở thủ công các công cụ dành cho nhà phát triển và nhập mã vào
  • Bạn có thể tìm các liên kết, nhấp vào chúng và thậm chí điền văn bản vào các trường nhập

Tất cả những điều này đều có sẵn cho bạn nhờ Watir &dự án Selenium.

Hãy xem một số ví dụ về mã!

Khởi chạy trình duyệt

Đầu tiên, tạo một đối tượng trình duyệt như sau:

require 'watir'

browser = Watir::Browser.new

Thao tác này sẽ mở ra một cửa sổ Chrome trống (giả sử bạn đã cài đặt nó) mà bạn có thể kiểm soát ngay bây giờ.

Ví dụ :

browser.goto("rubyguides.com")

Chrome sẽ điều hướng đến URL này và trang sẽ tải như thể bạn tự nhập URL.

Bây giờ :

Bạn có thể làm bất cứ điều gì bạn thường làm trên trang web bằng chuột và bàn phím.

Giống như tìm một liên kết và nhấp vào nó.

Ví dụ :

browser.link(text: "All Posts").click

Cách tìm phần tử bằng Watir

Bạn có thể tìm thấy các phần tử theo thuộc tính của chúng, như:

  • văn bản
  • lớp
  • id

Các phần tử này có các phương thức phù hợp với tên HTML của chúng, vì vậy nếu bạn đang tìm kiếm thẻ H1, phương pháp là h1 , đối với các đoạn văn, phương thức là p &đối với hình ảnh, phương thức là img hoặc images .

Ví dụ :

browser.h1(text: "Ruby Post Index")

Bạn cũng có thể nhận danh sách các phần tử bằng cách sử dụng số nhiều của tên phương thức.

Ví dụ :

browser.links
browser.images
browser.h2s

Điều này sẽ cung cấp cho bạn một Watir::AnchorCollection đối tượng, phản hồi với các phương thức như từng, bản đồ và chèn.

Ví dụ :

browser.links.map(&:href)

Cách đối phó với thời gian chờ và các yếu tố không có mặt

Có thể xảy ra trường hợp một phần tử không có mặt, có thể do phần tử đó chưa được tải vào trang hoặc trang đã thay đổi.

Điều gì xảy ra khi Watir không thể tìm thấy một phần tử ?

Có một khoảng thời gian chờ.

Theo mặc định, thời lượng là 30 giây nhưng bạn có thể thay đổi:

Watir.default_timeout = 10

Khi nó hết hạn, bạn nhận được một Watir::Exception::UnknownObjectException ngoại lệ.

Nhưng có một cách khác để xử lý điều này!

Bạn có thể kiểm tra xem phần tử có xuất hiện hay không trước khi nhấp vào nó hoặc thực hiện bất kỳ hành động nào khác.

Đây là cách thực hiện :

link = browser.link(text: 'Guides')

if link.present?
  link.click
end

Cách Chụp Screnshot

Khi bạn có một trình duyệt đang mở và một trang được tải, bạn có thể chụp ảnh màn hình của nó.

Như thế này :

browser.screenshot.save("/tmp/screen.png")

Thao tác này sẽ lưu hình ảnh của chế độ xem hiện tại.

Tập lệnh đang chạy

Bạn có thể chạy Javascript trong trình duyệt để ảnh hưởng đến trạng thái hiện tại của trang hoặc bạn có thể gọi các hàm Javascript được xác định trên trang đó.

Đây là cách thực hiện :

browser.execute_script "alert('bacon')"
# nil

Kết quả?

Cửa sổ cảnh báo có từ “thịt xông khói” 🙂

Chạy mã và lấy lại kết quả :

browser.execute_script "return 1 + 1"
# 2

Cách điền các trường đầu vào

Việc điền một trường đầu vào bao gồm hai bước:

  1. Tìm phần tử
  2. Gửi chìa khóa

Đây là một ví dụ :

browser.input(id: "search").send_keys("orange juice")

Bây giờ, bạn sẽ phải tìm nút gửi và nhấp vào nút đó.

Phương pháp &Mẹo Watir hữu ích

Watir cung cấp cho bạn quyền truy cập vào một số phương pháp hữu ích.

Ví dụ:lấy URL hiện tại :

browser.url

Nhận danh sách các tab đang mở :

browser.windows

Phóng to cửa sổ hiện tại :

browser.window.maximize

Lấy HTML và văn bản cho trang hiện tại :

browser.text
browser.html

Ngoài ra, đây là một mẹo nếu bạn muốn tìm kiếm các phần tử có khớp một phần, bạn có thể sử dụng biểu thức chính quy.

Như thế này :

browser.p(text: /ruby/)

Tóm tắt

Bạn đã biết về Watir trong hướng dẫn này, một viên ngọc Ruby cho phép bạn điều khiển từ xa trình duyệt web để bạn có thể tự động hóa các tác vụ và trích xuất thông tin từ các trang.

Hãy chia sẻ bài viết này nếu bạn thấy hữu ích để nhiều người có thể tìm thấy nó!

Cảm ơn vì đã đọc.