Class: NarouAgent::Actions::CreatePart

Inherits:
NarouAgent::Action show all
Defined in:
lib/narou_agent/actions/create_part.rb

Constant Summary

Constants included from UrlHelper

UrlHelper::NCODE_PATTERN

Instance Method Summary collapse

Methods inherited from NarouAgent::Action

#initialize

Methods included from UrlHelper

extract_part_id, ncode_to_i

Constructor Details

This class inherits a constructor from NarouAgent::Action

Instance Method Details

#run(ncode, subtitle, body, date = nil, wait_duration = NarouAgent::DEFAULT_WAIT_DURATION) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/narou_agent/actions/create_part.rb', line 4

def run(ncode, subtitle, body, date = nil, wait_duration = NarouAgent::DEFAULT_WAIT_DURATION)
  driver.get(new_part_url(ncode))

  driver.find_element(name: 'novel').send_keys(body)
  driver.find_element(name: 'subtitle').send_keys(subtitle)

  if !date.nil? && date > Time.now
    driver.script <<~JAVASCRIPT
      $('.hasDatepicker').datepicker('setDate', new Date('#{date.strftime('%F')}'));
    JAVASCRIPT
    Selenium::WebDriver::Support::Select.new(driver.find_element(:name, 'hour')).select_by(:value, date.hour.to_s)
  end

  driver.find_element(css: '#ziwainput[value="次話投稿[確認]"]').click
  driver.find_element(css: '#ziwainput[value="次話投稿[実行]"]').click

  driver.find_element(xpath: '//h2[text()="次話投稿[完了]"]')

  sleep wait_duration

  driver.navigate.to(novel_url(ncode))
  driver.find_element(link: subtitle)['href']
rescue Selenium::WebDriver::Error::WebDriverError => e
  raise ActionFailedError.new(e)
end