Class: Cxeed::Proxy
- Inherits:
-
Object
- Object
- Cxeed::Proxy
- Defined in:
- lib/cxeed/proxy.rb
Constant Summary collapse
- BACKSPACE =
"\ue003".freeze
Instance Method Summary collapse
- #arrive(time = Time.now.strftime('%H:%M'), date = Time.now) ⇒ Object
- #day_attendance(day) ⇒ Object
-
#initialize(credential, verbose: false, save_screenshot: false) ⇒ Proxy
constructor
A new instance of Proxy.
- #leave(time = Time.now.strftime('%H:%M'), date = Time.now) ⇒ Object
- #login ⇒ Object
- #login_test ⇒ Object
- #navigate_to_input_form ⇒ Object
-
#open_date(date) ⇒ Object
引数の日付の入力画面に遷移する.
- #today ⇒ Object
Constructor Details
#initialize(credential, verbose: false, save_screenshot: false) ⇒ Proxy
Returns a new instance of Proxy.
8 9 10 11 12 13 14 15 |
# 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 |
Instance Method Details
#arrive(time = Time.now.strftime('%H:%M'), date = Time.now) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/cxeed/proxy.rb', line 91 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 verbose_log "after click register button: #{ @driver.current_url }" save_screenshot end |
#day_attendance(day) ⇒ Object
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/cxeed/proxy.rb', line 143 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) ⇒ Object
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/cxeed/proxy.rb', line 110 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 verbose_log "after click register button: #{ @driver.current_url }" save_screenshot end |
#login ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/cxeed/proxy.rb', line 17 def login verbose_log 'start login' @driver.navigate.to(@credential.login_url) verbose_log "at #{ @driver.current_url }" 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) verbose_log "input DataSource: #{ @driver.find_element(:name, 'DataSource').attribute('value')}" verbose_log "input login id: #{ @driver.find_element(:name, 'LoginID').attribute('value')}" verbose_log "input password: #{ @driver.find_element(:name, 'PassWord').attribute('value')}" save_screenshot # ログイン処理 @driver.find_element(:xpath, '//td[@class="loginBtn"]/a').click verbose_log "after click login page: #{ @driver.current_url }" save_screenshot end |
#login_test ⇒ Object
45 46 47 48 49 |
# File 'lib/cxeed/proxy.rb', line 45 def login_test login @driver.current_url end |
#navigate_to_input_form ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/cxeed/proxy.rb', line 51 def navigate_to_input_form verbose_log "start navigate input form: frame2=#{ @driver.find_element(:name, 'FRAME2').attribute('src') }" save_screenshot # frameの指定 @driver.switch_to.frame @driver.find_element(id: 'FRAME1') # 勤務データ入力遷移 @driver.find_element(:xpath, '//a[@title="勤務データ入力"]').click # 一旦main documentに戻る @driver.switch_to.default_content # frameの指定 @driver.switch_to.frame @driver.find_element(name: 'FRAME2') verbose_log "finish navigate input form: #{ @driver.current_url }" save_screenshot end |
#open_date(date) ⇒ Object
引数の日付の入力画面に遷移する
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/cxeed/proxy.rb', line 70 def open_date(date) verbose_log "start open date command: #{ @driver.current_url }: #{ @driver.find_element(:class, 'cxCmnTitleStr').text }" # 処理期間の入力 @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')) verbose_log "input start date: #{ @driver.find_element(:xpath, '//input[@name="StartYMD"]').attribute('value') }" verbose_log "input end date: #{ @driver.find_element(:xpath, '//input[@name="EndYMD"]').attribute('value') }" save_screenshot # 検索 @driver.find_element(:xpath, '//input[@name="srchbutton"]').click verbose_log "after click search button: #{ @driver.current_url }" save_screenshot end |
#today ⇒ Object
129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/cxeed/proxy.rb', line 129 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 |