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
navigate_to_input_form() click to toggle source
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