Rails Capybara 這個 gem, 相信很多人都是拿來做 test,
我原本也是這麼想, 但基於某次主管把它拿來做別的事情後, 我改觀了, 果然經驗很重要!!!

某次因為要批次列印 c2c 店到店的物流單, 但綠界沒有這個 api 啊啊啊
但客戶又有這個需求, 這時求救於主管, 一語點醒夢中人
就用 Capybara 的 browser 來幫你自動按就好了。

1
2
3
4
gem 'capybara'
gem 'selenium-webdriver'
gem 'capybara-screenshot'
gem "cuprite"

之後我寫了一個 service 來執行

1
2
3
4
require 'capybara'
require 'selenium-webdriver'
require 'capybara-screenshot'
require 'capybara/cuprite'

接下來就是一些基本設定

1
2
3
4
5
6
7
8
9
10
11
12
#礙於每個人的設定不同, 所以也不一定會一樣
Capybara.javascript_driver = :cuprite
Capybara.default_driver = :selenium
Capybara.default_max_wait_time = 7
Capybara.app_host = "#{Settings.default_url_options.protocol}://" + Settings.default_url_options.host.to_s
Capybara.run_server = true
Capybara.register_driver :cuprite do |app|
options = { window_size: [1024, 768], headless: true, timeout: 120, process_timeout: 120, browser_options: { 'no-sandbox': nil } }
Capybara::Cuprite::Driver.new(app, options)
end
@session = Capybara::Session.new(:cuprite)
@session.driver.add_headers({ 'User-Agent' => 'Cuprite', 'Accept-Language' => 'zh-tw' })

那其實接下來就是行為觸發, 好比像在寫測試一樣, 根據你的需求去執行.

但就是想說, 有時候如果把一個東西定義了上了標籤, 就好像刻板印象一樣,
但其實可以發揮的作用也是很多, 這是在提醒自己。