29 from selenium
import webdriver
30 from selenium.common.exceptions
import NoSuchElementException
31 from selenium.webdriver.common.by
import By
32 from selenium.webdriver.common.keys
import Keys
33 from selenium.webdriver.support.wait
import WebDriverWait
37 TEST_SERVER =
'localhost:8000'
43 self.driver.implicitly_wait(20)
44 self.
TEST_USER = {
'login':
'test_user',
'password':
'test1'}
45 self.
TEST_admin_cm = {
'login':
'test_cmadmin',
'password':
'test1',
'cm_password':
'test1'}
47 self.
iso =
"http://archive.ubuntu.com/ubuntu/dists/raring/main/installer-i386/current/images/netboot/mini.iso"
63 def wait_for_text(self, xpath, text_list, max_time=20, sleep_time=0.5, fail=True):
64 end_time = time.time() + max_time
67 el = self.driver.find_elements_by_xpath(xpath)
68 for text
in text_list:
69 if text
in "".join(i.text
for i
in el):
71 except NoSuchElementException:
74 time.sleep(sleep_time)
75 if(time.time() > end_time):
79 self.fail(
"time out while searching for \"" + text +
"\"")
90 end_time = time.time() + max_time
93 el = self.driver.find_elements_by_xpath(
"//div[@id='top-messages']/div")
95 if i.get_attribute(
"class") ==
"error":
96 i.find_element(By.CLASS_NAME,
"remove-button").click()
99 for text
in text_list:
100 if text
in "".join(i.text
for i
in el):
102 except NoSuchElementException:
105 time.sleep(sleep_time)
106 if(time.time() > end_time):
108 self.fail(
"time out while seraching for \"" + text +
"\"")
126 def __wait_for_table_update(self, col_name, text, check_data,
127 path_body_trs, path_head_tds, max_time=100, sleep_time=5):
129 end_time = time.time() + max_time
132 row = self.
__find_row(ind_col, text, path_body_trs)
133 self.assertNotEqual(row,
None,
"Didn't find text %s in column %s" % (text, col_name))
136 for key, value
in check_data[
'dict'].iteritems():
138 if not value
in row[ind_key].text:
143 time.sleep(sleep_time)
144 if(time.time() > end_time):
147 self.driver.refresh()
150 el = self.driver.find_elements_by_xpath(
"//div[@id='top-messages']/div")
152 if i.get_attribute(
"class") ==
"error":
153 i.find_element(By.CLASS_NAME,
"remove-button").click()
156 self.fail(
"time out while seraching for \"" + text +
"\"")
165 def __get_index_of_column(self, col_name, path_head_tds):
168 tds = self.driver.find_elements_by_xpath(path_head_tds)
169 for i
in range(len(tds)):
171 if td.text == col_name:
174 self.assertNotEqual(ind_col, -1,
"Column not found: %s" % (col_name))
186 def __find_row(self, ind_col, text, path_body_trs):
187 trs = self.driver.find_elements_by_xpath(path_body_trs)
189 for i
in range(len(trs)):
190 tds = trs[i].find_elements(By.TAG_NAME,
"td")
191 if len(tds) > ind_col:
192 if text
in tds[ind_col].text:
203 def __click_menu_item(self, menu_item_text):
205 self.
wait_for_text(
"//ul[@id='context-menu-list']/li", [menu_item_text])
206 items = self.driver.find_elements_by_xpath(
"//ul[@id='context-menu-list']/li")
208 if i.text == menu_item_text:
227 def cell_click(self, col_name, text, check_data=None, action_name="Actions", element="div",
228 path_head_tds=
"//table[@id='item-list']/thead/tr/td",
229 path_body_trs=
"//table[@id='item-list']/tbody/tr"):
231 if check_data !=
None:
235 row = self.
__find_row(ind_col, text, path_body_trs)
236 self.assertNotEqual(row,
None,
"Didn't find text %s in column %s" % (text, col_name))
240 row[ind_action].find_element(By.TAG_NAME, element).click()
255 def row_click(self, col_name, text, check_data=None,
256 path_head_tds=
"//table[@id='item-list']/thead/tr/td",
257 path_body_trs=
"//table[@id='item-list']/tbody/tr"):
262 row = self.
__find_row(ind_col, text, path_body_trs)
263 self.assertNotEqual(row,
None,
"Didn't find text %s in column %s" % (text, col_name))
280 def menu_click(self, col_name, text, menu_item_text, check_data=None, action_name="Actions"):
282 self.
cell_click(col_name, text, check_data, action_name)
289 driver.get(self.
base_url +
'/auth/login/')
291 driver.find_element_by_id(
"id_username").clear()
292 driver.find_element_by_id(
"id_username").send_keys(user[
'login'])
293 driver.find_element_by_id(
"id_password").clear()
294 driver.find_element_by_id(
"id_password").send_keys(user[
'password'])
295 driver.find_element_by_css_selector(
"input.big_button").click()
304 driver.get(self.
base_url +
'/admin_cm/login/')
306 driver.find_element_by_id(
"id_password").clear()
307 driver.find_element_by_id(
"id_password").send_keys(self.
TEST_admin_cm[
'cm_password'])
308 driver.find_element_by_css_selector(
"input.big_button").click()
315 driver.find_element_by_xpath(
"//form[@id='languageForm']/a/span[2]").click()
316 driver.find_element_by_xpath(
"//a[contains(text(),'English')]").click()