OSDN Git Service

add selenium test code.
[quickedit/quick_edit.git] / test / selenium / pages / page.rb
1 #coding: utf-8
2
3 module QuickEdit
4   module Test
5     module Pages
6       class Page
7         def initialize(driver, base_url, project)
8           @driver = driver
9           @base_url = base_url
10           @project = project
11           @default_wait = 0.2
12           @retry = 0
13           @retry_limit = 2
14         end
15
16         def get(url)
17           @driver.get url
18
19           wait
20         end
21
22         def wait(sec=nil)
23           sec = @default_wait if sec.nil?
24           sleep sec
25         end
26
27         def find_element(by, target)
28           @driver.find_element(by, target)
29         end
30
31         def find_elements(by, target)
32           @driver.find_elements(by, target)
33         end
34
35         def input_text(by, target, value)
36           wait
37
38           element = find_element(by, target)
39           element.clear
40           element.send_keys value.to_s unless value.nil? || value.empty?
41         end
42
43         def click(by, target)
44           wait
45
46           begin
47             element = find_element(by, target)
48             element.click
49             @retry = 0
50           rescue Selenium::WebDriver::Error::StaleElementReferenceError => e
51             if @retry < @retry_limit
52               @retry += 1
53               p "+++ retry for click(#{by},#{target})"
54               retry
55             else
56               raise e
57             end
58           end
59         end
60
61         def select(by, target, value)
62           wait
63
64           element = find_element(by, target)
65           select = Selenium::WebDriver::Support::Select.new(element)
66           select.select_by :value, value.to_s
67         end
68
69         def selected(by_or_element, target=nil)
70           if target.nil?
71             element = by_or_element
72           else
73             element = find_element(by, target)
74           end
75           select = Selenium::WebDriver::Support::Select.new(element)
76           select.selected_options
77         end
78
79         def action
80           @driver.action
81         end
82
83         def alert
84           wait 3
85
86           @driver.switch_to.alert
87         end
88
89         def open_projects
90           ProjectsPage.open @driver, @base_url, @project
91         end
92
93         def open_users
94           UsersPage.open @driver, @base_url, @project
95         end
96
97         def open_custom_fields
98           CustomFieldsPage.open @driver, @base_url, @project
99         end
100
101         def open_workflow_edit
102           WorkflowEditPage.open @driver, @base_url, @project
103         end
104
105         def open_issues
106           IssuesPage.open @driver, @base_url, @project
107         end
108       end
109     end
110   end
111 end
112