class Cxeed::Proxy
Constants
- BACKSPACE
Public Class Methods
new(credential, verbose: false, save_screenshot: false)
click to toggle source
# File lib/cxeed/proxy.rb, line 8 def initialize(credential, verbose: false, save_screenshot: false) caps = Selenium::WebDriver::Remote::Capabilities.chrome('chromeOptions': {args: %i(--headless --disable-gpu window-size=1920,1080)}) @driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps @credential = credential @verbose = verbose @save_screenshot = save_screenshot end
Public Instance Methods
arrive(time = Time.now.strftime('%H:%M'), date = Time.now)
click to toggle source
# File lib/cxeed/proxy.rb, line 88 def arrive(time = Time.now.strftime('%H:%M'), date = Time.now) login navigate_to_input_form open_date(date) # 出勤時間の入力 work_field = @driver.find_element(:xpath, '//td[@id="grdXyw1100G-rc-0-6"]') @driver.action.send_keys(work_field, time).perform save_screenshot # 登録処理 @driver.find_element(:xpath, '//input[@name="regbutton"]').click puts "* after click register button: #{ @driver.current_url }" if @verbose save_screenshot end
day_attendance(day)
click to toggle source
# File lib/cxeed/proxy.rb, line 140 def day_attendance(day) login navigate_to_input_form # 日付の整形 day_str = DateTime.parse(day).strftime('%Y%m%d') # 処理期間の入力 @driver.find_element(:xpath, '//input[@name="StartYMD"]').send_keys(BACKSPACE * 8) @driver.find_element(:xpath, '//input[@name="StartYMD"]').send_keys(day_str) @driver.find_element(:xpath, '//input[@name="EndYMD"]').send_keys(BACKSPACE * 8) @driver.find_element(:xpath, '//input[@name="EndYMD"]').send_keys(day_str) # 検索 @driver.find_element(:xpath, '//input[@name="srchbutton"]').click date = @driver.find_element(:xpath, '//td[@id="grdXyw1100G-rc-0-0"]/nobr').text arrive_at = @driver.find_element(:xpath, '//td[@id="grdXyw1100G-rc-0-6"]/nobr').text leave_at = @driver.find_element(:xpath, '//td[@id="grdXyw1100G-rc-0-9"]/nobr').text Cxeed::Attendance.new date, arrive_at, leave_at end
leave(time = Time.now.strftime('%H:%M'), date = Time.now)
click to toggle source
# File lib/cxeed/proxy.rb, line 107 def leave(time = Time.now.strftime('%H:%M'), date = Time.now) login navigate_to_input_form open_date(date) # 退勤時間の入力 work_field = @driver.find_element(:xpath, '//td[@id="grdXyw1100G-rc-0-9"]') @driver.action.send_keys(work_field, time).perform save_screenshot # 登録処理 @driver.find_element(:xpath, '//input[@name="regbutton"]').click puts "* after click register button: #{ @driver.current_url }" if @verbose save_screenshot end
login()
click to toggle source
# File lib/cxeed/proxy.rb, line 17 def login puts '* start login' if @verbose @driver.navigate.to(@credential.login_url) puts "* at #{ @driver.current_url }" if @verbose save_screenshot # 会社コード入力 @driver.find_element(:name, 'DataSource').send_keys(@credential.company_code) # 個人コード入力 @driver.find_element(:name, 'LoginID').send_keys(@credential.employee_code) # パスワード入力 @driver.find_element(:name, 'PassWord').send_keys(@credential.password) puts "* input DataSource: #{ @driver.find_element(:name, 'DataSource').attribute('value')}" if @verbose puts "* input login id: #{ @driver.find_element(:name, 'LoginID').attribute('value')}" if @verbose puts "* input password: #{ @driver.find_element(:name, 'PassWord').attribute('value')}" if @verbose save_screenshot # ログイン処理 @driver.find_element(:xpath, '//td[@class="loginBtn"]/a').click puts "* after click login page: #{ @driver.current_url }" if @verbose save_screenshot end
login_test()
click to toggle source
# File lib/cxeed/proxy.rb, line 45 def login_test login @driver.current_url end
open_date(date)
click to toggle source
引数の日付の入力画面に遷移する
# File lib/cxeed/proxy.rb, line 67 def open_date(date) puts "* start open date command: #{ @driver.current_url }: #{ @driver.find_element(:class, 'cxCmnTitleStr').text }" if @verbose # 処理期間の入力 @driver.find_element(:xpath, '//input[@name="StartYMD"]').send_keys(BACKSPACE * 8) @driver.find_element(:xpath, '//input[@name="StartYMD"]').send_keys(date.strftime('%Y%m%d')) @driver.find_element(:xpath, '//input[@name="EndYMD"]').send_keys(BACKSPACE * 8) @driver.find_element(:xpath, '//input[@name="EndYMD"]').send_keys(date.strftime('%Y%m%d')) puts "* input start date: #{ @driver.find_element(:xpath, '//input[@name="StartYMD"]').attribute('value') }" if @verbose puts "* input end date: #{ @driver.find_element(:xpath, '//input[@name="EndYMD"]').attribute('value') }" if @verbose save_screenshot # 検索 @driver.find_element(:xpath, '//input[@name="srchbutton"]').click puts "* after click search button: #{ @driver.current_url }" if @verbose save_screenshot end
today()
click to toggle source
# File lib/cxeed/proxy.rb, line 126 def today login navigate_to_input_form date = @driver.find_element(:xpath, '//td[@id="grdXyw1100G-rc-0-0"]/nobr').text arrive_at = @driver.find_element(:xpath, '//td[@id="grdXyw1100G-rc-0-6"]/nobr').text leave_at = @driver.find_element(:xpath, '//td[@id="grdXyw1100G-rc-0-9"]/nobr').text today = Cxeed::Attendance.new date, arrive_at, leave_at today end
Private Instance Methods
frame_source(frame_name)
click to toggle source
# File lib/cxeed/proxy.rb, line 167 def frame_source(frame_name) @driver.find_element(:name, frame_name).attribute('src') end
save_screenshot()
click to toggle source
# File lib/cxeed/proxy.rb, line 171 def save_screenshot @driver.save_screenshot("./cxeed_#{ Time.now.strftime('%Y%m%d%H%M%S%L') }.png") if @save_screenshot end