OSDN Git Service

61caaa014fab9a711b41f771ae1f55ddf70c41f8
[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_my_apikey
90           MyApiKeyPage.open @driver, @base_url, @project
91         end
92
93         def open_admin_info
94           AdminInfoPage.open @driver, @base_url, @project
95         end
96
97         def open_projects
98           ProjectsPage.open @driver, @base_url, @project
99         end
100
101         def open_users
102           UsersPage.open @driver, @base_url, @project
103         end
104
105         def open_custom_fields
106           CustomFieldsPage.open @driver, @base_url, @project
107         end
108
109         def open_workflow_edit
110           WorkflowEditPage.open @driver, @base_url, @project
111         end
112
113         def open_mypage
114           MyPage.open @driver, @base_url, @project
115         end
116
117         def open_issues
118           IssuesPage.open @driver, @base_url, @project
119         end
120
121         def open_login
122           StartPage.open @driver, @base_url, @project
123         end
124
125         def logout()
126           click :css, 'a.logout'
127
128           WelcomePage.new @driver, @base_url, @project
129         end
130
131         def current_user()
132           find_element(:css, "a.user.active").text
133         end
134       end
135     end
136   end
137 end
138