Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Ruby

Tự Động Hóa Trình Duyệt Trong Ruby Với Watir: Hướng Dẫn Toàn Diện

Bạn có biết rằng bạn có thể điều khiển trình duyệt web của mình bằng Ruby?

Gem Watir cho phép bạn làm điều đó.

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 khu vực hiển thị của trang
  • Bạn có thể chạy javascript trên bất kỳ trang nào, không cần phải thủ công mở công cụ nhà phát triển & gõ code
  • Bạn có thể tìm liên kết, nhấp vào chúng, thậm chí điền văn bản vào các trường nhập liệu

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

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

Khởi Động Trình Duyệt

Trước tiên, tạo đối tượng trình duyệt như sau:

require 'watir'
browser = Watir::Browser.new

Điều này sẽ mở một cửa sổ Chrome trống (giả sử bạn đã cài đặt) mà bạn có thể điều khiển 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ự gõ 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 với chuột & bàn phím.

Như tìm một liên kết & nhấp vào nó.

Ví dụ:

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

Cách Tìm Phần Tử Với Watir

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

  • text
  • class
  • id

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

Ví dụ:

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

Bạn cũng có thể lấy danh sách phần tử bằng cách dùng 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ẽ cho bạn đối tượng Watir::AnchorCollection, phản hồi các phương thức như each, map & inject.

Ví dụ:

browser.links.map(&:href)

Cách Xử Lý Timeout & Phần Tử Không Hiện Diện

Có thể xảy ra trường hợp phần tử không hiện diện, có thể vì 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 tìm thấy phần tử?

Có một timeout.

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

Watir.default_timeout = 10

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

Nhưng có cách khác để xử lý!

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

Cách làm:

link = browser.link(text: 'Guides')
if link.present?
link.click
end

Cách Chụp Ảnh Màn Hình

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

Như sau:

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

Điều này lưu ảnh của khung nhìn hiện tại.

Chạy Script

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

Cách làm:

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

Kết quả?

Một cửa sổ cảnh báo với từ „bacon“ 🙂

Chạy code & lấy kết quả trả về:

browser.execute_script "return 1 + 1" # 2

Cách Điền Trường Nhập Liệu

Điền trường nhập liệu bao gồm hai bước:

  1. Tìm phần tử
  2. Gửi phím

Ví dụ:

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

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

Phương Thức & Mẹo Hữu Ích Của Watir

Watir cho bạn truy cập một số phương thức hữu ích.

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

browser.url

Lấy danh sách tab mở:

browser.windows

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

browser.window.maximize

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

browser.text
browser.html

Cũng đây là mẹo nếu bạn muốn tìm phần tử với khớp một phần, bạn có thể dùng biểu thức chính quy.

Như sau:

browser.p(text: /ruby/)

Tóm Tắt

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

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

Cảm ơn bạn đã đọc.