Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

ทำให้เบราว์เซอร์ทำงานอัตโนมัติด้วย Ruby และ Watir: คู่มือฉบับสมบูรณ์

คุณรู้ไหมว่าคุณสามารถควบคุมเว็บเบราว์เซอร์ของคุณด้วย Ruby ได้?

Gem Watir ช่วยให้คุณทำได้

และมันมาพร้อมกับพลังเต็มรูปแบบของเบราว์เซอร์สมัยใหม่:

  • คุณสามารถถ่ายภาพหน้าจอ (screenshot) ของพื้นที่ที่มองเห็นได้ของหน้าเว็บ
  • คุณสามารถรัน JavaScript บนหน้าเว็บใดๆ ได้ โดยไม่ต้องเปิดเครื่องมือนักพัฒนาและพิมพ์โค้ดด้วยตนเอง
  • คุณสามารถหาลิงก์ คลิกพวกมัน และแม้แต่กรอกข้อความลงในช่องป้อนข้อมูล

ทั้งหมดนี้พร้อมใช้งานสำหรับคุณ ขอบคุณ Watir และโครงการ Selenium

มาดูตัวอย่างโค้ดบ้าง!

เปิดเบราว์เซอร์

ก่อนอื่น สร้างออบเจ็กต์เบราว์เซอร์แบบนี้:

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

สิ่งนี้จะเปิดหน้าต่าง Chrome ว่าง (สมมติว่าคุณติดตั้งไว้) ที่คุณสามารถควบคุมได้ตอนนี้

ตัวอย่างเช่น:

browser.goto("rubyguides.com")

Chrome จะนำทางไปยัง URL นี้ และหน้าจะโหลดเหมือนคุณพิมพ์ URL เอง

ตอนนี้:

คุณสามารถทำอะไรก็ได้ที่คุณปกติทำบนเว็บไซต์ด้วยเมาส์และคีย์บอร์ด

เช่น หาลิงก์และคลิกมัน

ตัวอย่าง:

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

วิธีค้นหา Element ด้วย Watir

คุณสามารถค้นหา element ด้วยแอตทริบิวต์ของพวกมัน เช่น:

  • text
  • class
  • id

Element เหล่านี้มีเมธอดที่ตรงกับชื่อ HTML ของพวกมัน ดังนั้น หากคุณมองหาแท็ก H1 เมธอดคือ h1 สำหรับย่อหน้าเมธอดคือ p และสำหรับรูปภาพเมธอดคือ img หรือ images

ตัวอย่าง:

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

คุณยังสามารถได้รายการ element โดยใช้พหูพจน์ของชื่อเมธอด

ตัวอย่าง:

browser.links
browser.images
browser.h2s

สิ่งนี้จะให้ออบเจ็กต์ Watir::AnchorCollection ซึ่งตอบสนองต่อเมธอดเช่น each, map และ inject

ตัวอย่าง:

browser.links.map(&:href)

วิธีจัดการ Timeout และ Element ที่ไม่มีอยู่

อาจเกิดขึ้นได้ว่า element ไม่มีอยู่ อาจเพราะ element ยังไม่ถูกโหลดเข้าหน้าเว็บ หรือหน้าเว็บเปลี่ยนไป

เกิดอะไรขึ้น เมื่อ Watir หา element ไม่เจอ?

จะมี timeout

ค่าเริ่มต้นคือ 30 วินาที แต่คุณสามารถเปลี่ยนได้:

Watir.default_timeout = 10

เมื่อหมดเวลา คุณจะได้ exception Watir::Exception::UnknownObjectException

แต่มันมีอีกวิธีหนึ่งในการจัดการ!

คุณสามารถตรวจสอบว่า element มีอยู่จริงก่อนคลิกหรือทำการกระทำอื่นๆ

วิธีทำ:

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

วิธีถ่ายภาพหน้าจอ (Screenshot)

เมื่อคุณมีเบราว์เซอร์เปิดและหน้าเว็บโหลดแล้ว คุณสามารถถ่ายภาพหน้าจอได้

แบบนี้:

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

สิ่งนี้บันทึกภาพของ viewport ปัจจุบัน

การรันสคริปต์

คุณสามารถรัน JavaScript ในเบราว์เซอร์เพื่อส่งผลต่อสถานะปัจจุบันของหน้า หรือคุณสามารถเรียกฟังก์ชัน JavaScript ที่กำหนดไว้บนหน้านั้น

วิธีทำ:

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

ผลลัพธ์?

หน้าต่างเตือนพร้อมคำว่า "bacon" 🙂

รันโค้ดและได้ผลลัพธ์กลับมา:

browser.execute_script "return 1 + 1" # 2

วิธีกรอกช่องป้อนข้อมูล (Input Fields)

การกรอกช่องป้อนข้อมูลเกี่ยวข้องกับสองขั้นตอน:

  1. หา element
  2. ส่งคีย์ (send keys)

ตัวอย่าง:

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

ตอนนี้คุณจะต้องหาปุ่ม submit และคลิกมัน

เมธอดและเคล็ดลับ Watir ที่มีประโยชน์

Watir ให้คุณเข้าถึงเมธอดที่มีประโยชน์บางอย่าง

ตัวอย่าง รับ URL ปัจจุบัน:

browser.url

รับรายการแท็บที่เปิดอยู่:

browser.windows

ขยายหน้าต่างปัจจุบันเต็มหน้าจอ:

browser.window.maximize

รับ HTML และข้อความสำหรับหน้าปัจจุบัน:

browser.text
browser.html

นี่คือเคล็ดลับหากคุณต้องการค้นหา element ด้วยการจับคู่บางส่วน (partial match) คุณสามารถใช้ regular expression ได้

แบบนี้:

browser.p(text: /ruby/)

สรุป

คุณได้เรียนรู้เกี่ยวกับ Watir ในบทช่วยสอนนี้ Ruby gem ที่ช่วยให้คุณควบคุมเบราว์เซอร์เว็บจากระยะไกล เพื่อให้คุณสามารถทำงานอัตโนมัติและดึงข้อมูลจากหน้าเว็บได้

โปรดแชร์บทความนี้หากคุณพบว่ามันมีประโยชน์ เพื่อให้คนอื่นๆ หาเจอได้!

ขอบคุณที่อ่านครับ