Làm nhiều hơn việc acceptance test với Capybara và Rspec.

TL;DR

Cần thu thập thông tin của các đối tượng search theo keyword trên google => Viết script trên frameword Capybara để làm tự động, thay vì làm bằng tay.

Background

Như các bạn đã biết (cũng như dành cho các bạn chưa biết :D), đã code là phải có test, mà đã web là phải có acceptance.
Nếu làm việc với Rails thì chắc hẳn các bạn ko xa lạ gì với RspecCapybara.
Trong đó, CapybaraAcceptance test framework for web applications, dạng mô phỏng thao tác của người dùng cuối như click chuột, chọn link nọ, điền data vào form trên UI, submit ...

Ngữ cảnh

Mình đang phát triển 1 dịch vụ cho công ty, sắp tới sẽ được public ra ngoài.
Dịch vụ thì cũng đơn giản thôi, chỉ là giúp mấy anh sales man quản lý khách hàng và sổ sách của mình. Nói như vậy để hiểu là khách hàng mà dịch vụ nhắm tới là các công ty có bộ phận sales, có sales man, hay là các công ty có bán lẻ.
Và trong các cách giới thiệu sản phẩm tới các đối tượng khách hàng này, có 1 cách gọi là DM (mình chẳng biết là gì, chỉ thấy anh Boss bảo thế). Nó là cách mà gửi hẳn thư giấy tới địa chỉ khách hàng đó, trong thư giới thiệu về dịch vụ của mình.

Sau khoảng nửa ngày anh Boss loay hoay với cách thủ công là search google với 1 số keyword nhất định, vào homepage của khách hàng đó, copy địa chỉ công ty, tên cty ra file xls, sau đó đem in, nhét phong bì và gửi. Thì anh Boss có ra chỗ mình, kêu vất vả quá mày ạ, mày nghĩ cách nào làm nhanh cho tao :)))))

Sau 1 hồi hỏi chuyện, chỉ trỏ, thì anh Boss đưa ra 1 số keyword cố định, và cần địa chỉ công ty của các đối tượng search được bằng keyword này, càng nhiều càng tốt.

Mình nghĩ đến trò dùng các crawler có sẵn rồi, nhưng vẫn ko khoái. 1 phần vì phải tìm hiểu, cài đặt, code code, phần lại muốn nghịch ngợm cái gì mới hơn từ những cái thân quen, nên mình quyết định dùng Rails + Rspec + Capybara cho task này.
(Nhắc tới Rails + Rspec + Capybara cho có vẻ nguy hiểm thôi, chứ thực ra mình viết ngay trên branch mới của project đang có, đỡ phải cài đặt gì, cho nhanh :D)

Tóm lại:

  • Input: 1 tập keywords
  • Output: Info extract được từ những keywords trên. Target là địa chỉ.

Như đã nói từ đầu, mình viết task này như việc viết 1 acceptance test mới, với kịch bản như sau:

  1. Open google search url với param là keyword ở trên. Ví dụ Link
  2. Thực hiện click vào từng link để dẫn tới trang chi tiết, tìm tới mục thông tin về cty (thường là About)
  3. Parse text có trong page, bắt đầu với một số từ khoá, hay với 1 số element của DOM. Ở đây mình chọn tag table, vì mục About phổ biến tag này để hiển thị thông tin.
  4. Lưu text parse được ở bước 3 vào file CSV hoặc XLS.

Sau đó trước khi ra về mình vứt máy đấy cho nó chạy, sáng mai đến lụm kết quả rồi báo cáo thôi :D

Các này ko bảo đảm 100% là chính xác được (máy mà), nhưng cực kỳ áp đảo về số lượng. Sau đó anh Boss cũng filter 1 lần nữa, nhưng bớt nhọc hơn.


Bạn có tips hay tricks nào hay trong công việc hằng ngày thì chia sẻ cho mình biết với, kẻo (mình) suốt ngày CURD mãi cũng chán :D

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

ManhDV

21 bài viết.
35 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
38 6
TL; DR Cấu hình mastermaster trên nhiều node EC2 Mỗi node có nhiều database, với schema giống hệt nhau. Thực hiện điều phối việc read/write b...
ManhDV viết hơn 1 năm trước
38 6
White
14 0
Background Với những database có lượng read lớn thì tầm quan trọng của việc warmup BP đã được nhắc tới nhiều. Nhưng nó có hiệu quả tới mức như thế...
ManhDV viết hơn 1 năm trước
14 0
White
14 3
Background Bạn có nhớ gì về hồi cấp 3 ko? Ý mình ko phải là hình ảnh em gái xinh nhất khối mặc áo trong và ngoài có mã màu lần lượt là 000 và fff ...
ManhDV viết hơn 1 năm trước
14 3
Bài viết liên quan
White
21 3
Giao diện lập trình ứng dụng, còn gọi là API (Application Programming Interface) là chương trình cho phép người dùng sử dụng các phương thức của mộ...
chuong2v viết 3 năm trước
21 3
White
1 0
Rspec Kiểm tra JSON schema dùng rspec matcher Nay mình có viết TDD để check Repsonse Body của API (ở JSON format) có khớp với mẫu định sẵn hay khô...
Dang Tung Lam viết 2 năm trước
1 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
21 bài viết.
35 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!