Class: TranslatePage

Inherits:
Object
  • Object
show all
Defined in:
lib/translate_page.rb

Instance Method Summary collapse

Constructor Details

#initialize(urls, requests) ⇒ TranslatePage

Returns a new instance of TranslatePage.



6
7
8
9
10
# File 'lib/translate_page.rb', line 6

def initialize(urls, requests)
  @urls = urls
  @requests = requests
  @output = Array.new
end

Instance Method Details

#first_request(url, browser) ⇒ Object

First request



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/translate_page.rb', line 19

def first_request(url, browser)
  # Enter URL into translate form
  translate_form = browser.find_element(id: "source")
  translate_form.send_keys(url)

  # Click the button to translate to a particular language
  click_button = browser.find_elements(:xpath, "//*[@value='es']").last
  click_button.click

  # Press Translate button, then switch back to orginal
  browser.find_element(id: "gt-submit").click
end

#get_iframe_html(browser) ⇒ Object

Get iframe



66
67
68
69
70
71
72
73
74
# File 'lib/translate_page.rb', line 66

def get_iframe_html(browser)
  sleep(3)
  browser.find_element(id: "anno2").click

  # Get HTML inside the iframe
  browser.switch_to.frame(0)
  iframe_html = browser.find_element(class: "os-linux").attribute("innerHTML")
  return iframe_html
end

#nth_request(url, browser) ⇒ Object

Next request



33
34
35
36
37
38
39
# File 'lib/translate_page.rb', line 33

def nth_request(url, browser)
  browser.switch_to.default_content
  form_element = browser.find_element(name: "q")
  form_element.clear
  form_element.send_keys(url)
  form_element.submit
end

#setup_browserObject

Setup browser for translate



13
14
15
16
# File 'lib/translate_page.rb', line 13

def setup_browser
  @requests.get_page("https://translate.google.com")
  return @requests.get_most_recent_browser[1][0]
end

#translateObject

Translate the pages



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/translate_page.rb', line 42

def translate
  browser = setup_browser

  # Go through each link
  counter = 0
  @urls.each do |url|
    # Run translate on each page
    if counter == 0
      first_request(url, browser)
      counter+=1
    else
      nth_request(url, browser)
    end

    # Get html
    @output.push({url: url, html: get_iframe_html(browser)})
  end

  # Clean up
  @requests.close_all_browsers
  return @output
end