def test_add_node(self): driver = self.driver login.test_login(self) driver.find_element_by_link_text(u"存储节点管理").click() with file("../test_data/node_list_file") as f: ips = f.readlines() for ip in ips: node_mgmt = driver.find_element_by_class_name("toolbar-menu") ActionChains(driver).move_to_element(node_mgmt).perform() driver.find_element_by_link_text(u"添加存储节点").click() driver.find_element_by_id("clusternodeipaddr_octet_1").clear() driver.find_element_by_id( "clusternodeipaddr_octet_1").send_keys(ip.split('.')[0]) driver.find_element_by_id("clusternodeipaddr_octet_2").clear() driver.find_element_by_id( "clusternodeipaddr_octet_2").send_keys(ip.split('.')[1]) driver.find_element_by_id("clusternodeipaddr_octet_3").clear() driver.find_element_by_id( "clusternodeipaddr_octet_3").send_keys(ip.split('.')[2]) driver.find_element_by_id("clusternodeipaddr_octet_4").clear() driver.find_element_by_id( "clusternodeipaddr_octet_4").send_keys(ip.split('.')[3]) driver.find_element_by_xpath( "(//button[@type='button'])[2]").click() driver.find_element_by_xpath( "//button[@type='button']").click()
def test_ext_links(driver): test_login(driver) driver.get( "http://localhost/litecart/public_html/admin/?app=countries&doc=countries" ) driver.find_element_by_xpath(".//*[@id='content']/div/a").click() all_ex_link = driver.find_elements_by_xpath( ".//*[@id='content']/form/table//a[@target='_blank']") print("Total ext_link: " + str(len(all_ex_link))) # получаем набор текущих открытых окон main_window = driver.current_window_handle print('main_window') print(main_window) old_windows = driver.window_handles print('old_windows') print(old_windows) # нажимаем на ссылку, которая открывает документ в новом окне for j in range(2): for i in range(len(all_ex_link)): print("i=" + str(i)) with wait_for_new_window(driver, 10): all_ex_link[i].click() # получаем новый набор включающий уже новое окно new_windows = driver.window_handles print('new_windows') print(new_windows) # получаем новые окна (из одного списка вычтем другой) new_window = list(set(new_windows).difference(old_windows)) print('new_window') print(new_window) # закрываем новое окно driver.switch_to_window(new_window[0]) driver.close() driver.switch_to_window(main_window)
def test_geo_zones_page(driver): test_login(driver) driver.get( "http://localhost/litecart/public_html/admin/?app=geo_zones&doc=geo_zones" ) # зайти в каждую из стран geozones_list_text = [] # множество из ссылок на страницы с зонами geo_links = driver.find_elements_by_xpath( ".//*[@id='content']/form/table/tbody/tr[@class='row']/td [not(contains (@style,'text'))]/a" ) for link in geo_links: print(link.get_attribute('href')) geozones_list_text.append(link.get_attribute('href')) # далее бежим уже по спискам в открытых страничках for i in range(len(geozones_list_text)): geozones_list = [] driver.get(geozones_list_text[i]) geo_zones_in_selects = driver.find_elements_by_xpath( ".//*[@id='table-zones']/tbody/tr/td/select[starts-with(@name,'zones[') and not(contains (@aria-hidden," "'true'))]/option[@selected='selected']") for geozones in geo_zones_in_selects: geozones_list.append(geozones.text) sorted_geozones_list = sorted(geozones_list) print(geozones_list) assert (geozones_list == sorted_geozones_list)
def test_create_ec(self): driver = self.driver login.test_login(self) driver.find_element_by_link_text(u"存储服务管理").click() create_service = driver.find_element_by_link_text(u"创建&扩容") ActionChains(driver).move_to_element(create_service).perform() driver.find_element_by_link_text(u"创建服务").click() driver.find_element_by_id("clusterservicename").clear() #填写服务名称 driver.find_element_by_id("clusterservicename").send_keys("test") driver.find_element_by_id("btnext").click() #选择服务类型 Select(driver.find_element_by_id( "serviceraidlv")).select_by_visible_text(u"N+M冗余") driver.find_element_by_id("clusterservicedisknum").send_keys("2") driver.find_element_by_id("clusterservicedispersenum").send_keys("1") driver.find_element_by_id("btnext").click() driver.find_element_by_css_selector("input[type=\"checkbox\"]").click() driver.find_element_by_id("btfinished").click() driver.find_element_by_xpath("(//button[@type='button'])[3]").click() time.sleep(2) driver.find_element_by_xpath("//button[@type='button']").click() driver.find_element_by_css_selector("a.ui-icon.ui-icon-power").click() self.driver.implicitly_wait(120) #删除存储卷 driver.find_element_by_xpath("//button[@type='button']").click() time.sleep(3) driver.find_element_by_xpath( ".//*[@id='test_tr']/td[1]/dl[1]/dd/a").click() driver.find_element_by_xpath( ".//*[@id='ext-gen1018']/div[2]/div[3]/div/button[2]").click() self.driver.implicitly_wait(60) driver.find_element_by_xpath("//button[@type='button']").click()
def test_countries(driver): test_login(driver) driver.get( "http://localhost/litecart/public_html/admin/?app=countries&doc=countries" ) country_list = [] zones_count = [] country_acronym = [] index_for_link = [] rows = driver.find_elements_by_xpath( ".//table[@class='dataTable']//tr[@class='row']") # rows = wd.find_elements_by_xpath(".//table[@class='dataTable']//tr[@class='row' and position() <= 39]") i = 0 for elements in rows: # теперь пробежим по столбцам текущего tr из цикла column = elements.find_elements_by_tag_name("td") country_list.append(column[4].text) zones_count.append(column[5].text) country_acronym.append(column[3].text) if int(column[5].text) > 0: index_for_link.append(i) i = i + 1 # сравним список стран и отсортированный список sorted_country_list = sorted(country_list) assert country_list == sorted_country_list # print() print (country_list) print (zones_count) print (country_acronym) print print (index_for_link) for i in index_for_link: # print (country_acronym[i]) print(country_list[i]) print(zones_count[i]) zone_page = ( "http://localhost/litecart/public_html/admin/?app=countries&doc=edit_country&country_code=" + str(country_acronym[i])) geo_zones(driver, zone_page, flag=0)
def test_add_node(self): driver = self.driver login.test_login(self) driver.find_element_by_link_text(u"存储节点管理").click() time.sleep(1) nodes = driver.find_elements_by_tag_name("dd") for node in nodes: print node.click()
def test_new_product_add(driver): test_login(driver) name_of_new_prod = get_random_name(letters, 10) driver.find_element_by_link_text("Catalog").click() driver.find_element_by_link_text("Add New Product").click() driver.find_element_by_css_selector("label").click() if not driver.find_element_by_name("status").is_selected(): driver.find_element_by_name("status").click() find_and_fill_element(driver, element_name='name[en]', value=name_of_new_prod) find_and_fill_element(driver, element_name='code', value='7') find_and_fill_element(driver, element_name='quantity', value='11') # driver.find_element_by_name('new_images[]').send_keys('/home/taipan/selenium/selenium_test/img/duck_image.png') driver.find_element_by_name('new_images[]').send_keys(img_path) driver.find_element_by_name('date_valid_from').click() driver.find_element_by_name('date_valid_from').send_keys('2017-12-12') driver.find_element_by_name('date_valid_to').click() driver.find_element_by_name('date_valid_to').send_keys('2019-12-12') driver.find_element_by_link_text("Information").click() if not driver.find_element_by_xpath( "//div[@id='tab-information']//select[normalize-space(.)='-- Select -- ACME Corp.']//option[2]" ).is_selected(): driver.find_element_by_xpath( "//div[@id='tab-information']//select[normalize-space(.)='-- Select -- ACME Corp.']//option[2]" ).click() find_and_fill_element(driver, element_name='keywords', value='my_duck') find_and_fill_element(driver, element_name='short_description[en]', value='my_duck') driver.find_element_by_link_text("Prices").click() driver.find_element_by_name("purchase_price").send_keys("22") if not driver.find_element_by_xpath( "//div[@id='tab-prices']/table[1]/tbody/tr/td/select//option[2]" ).is_selected(): driver.find_element_by_xpath( "//div[@id='tab-prices']/table[1]/tbody/tr/td/select//option[2]" ).click() find_and_fill_element(driver, element_name='prices[USD]', value='23') driver.find_element_by_name("save").click() driver.find_element_by_id("content").click() # проверим что товар появился на странице просто сравнив его имя driver.find_element_by_link_text("Catalog").click() test = "//a[text()='" + str(name_of_new_prod) + "']" assert_element = driver.find_elements_by_xpath(test) print(len(assert_element)) assert len(assert_element) == 1
def test_add_domain(self): """第一次登陆修改密码""" driver=self.driver #导入登录模块 login.test_login(self) driver.find_element_by_id("old_password").clear() driver.find_element_by_id("old_password").send_keys("12345678") driver.find_element_by_id("new_password").clear() driver.find_element_by_id("new_password").send_keys("12345678") driver.find_element_by_id("confirm_new_password").clear() driver.find_element_by_id("confirm_new_password").send_keys("12345678") driver.find_element_by_xpath(".//*[@id='ext-gen1018']/div/div[3]/div/button").click()
def test_test_license(self): """配置license需要在节点添加完成之后执行""" driver = self.driver #导入登录模块 login.test_login(self) driver.find_element_by_link_text(u"管理License").click() driver.find_element_by_name("licensetable_length").click() driver.find_element_by_xpath( ".//*[@id='licensetable_length']/label/select/option[4]").click() f = len(file("../test_data/node_list_file", "r").readlines()) time.sleep(2) for node in range(f): node_id = "node-" + str(int(node + 1)) + ".yyy_lic_status" driver.find_element_by_id(node_id).click()
def test_add_domain(self): """设置域名""" driver = self.driver #导入登录模块 login.test_login(self) driver.find_element_by_link_text(u"存储节点管理").click() setup_domain = driver.find_element_by_link_text(u"设置") ActionChains(driver).move_to_element(setup_domain).perform() driver.find_element_by_link_text(u"设置域名").click() driver.find_element_by_id("clusterdomainname").clear() driver.find_element_by_id("clusterdomainname").send_keys("yyy") driver.find_element_by_id("domainnamesave").click() driver.find_element_by_xpath("(//button[@type='button'])[2]").click() driver.find_element_by_xpath("//button[@type='button']").click()
def test_menu_header(driver): test_login(driver) link_array = [] h1_array = [] # основное меню menu = driver.find_elements_by_xpath( "//*[@id='app-']/a/span[@class='name']") # количество пунктов for i in range(len(menu)): # после клика загрузится новая страница и все элементы, найденные ранее, будут считаться "протухшими" (stale), # с ними нельзя больше ничего делать # ищем список по новому и выбираем нужный элемент по индексу menu_el = driver.find_elements_by_xpath( "//*[@id='app-']/a/span[@class='name']") link_name = menu_el[i].text # имя пункта главного меню print(str(i) + "." + link_name) # переходим к пункту основного меню menu_el[i].click() # ищем пункты подменю driver.implicitly_wait(5) sub_menu = driver.find_elements_by_xpath( "//ul[@class='docs']//li//span") print("Total submenu elements:" + str(len(sub_menu))) if len(sub_menu) < 1: head_title = driver.find_element_by_xpath( "//td[@id='content']//h1//span").text print("Main Link_text : " + link_name) print("Head_title : " + head_title) link_array.append(link_name) h1_array.append(head_title) for j in range(len(sub_menu)): sub_menu_el = driver.find_elements_by_xpath( "//ul[@class='docs']//li//span") sub_menu_el[j].click() sub_menu_el = driver.find_elements_by_xpath( "//ul[@class='docs']//li//span") sub_m_link_name = sub_menu_el[j].text # имя пункта главного меню head_title2 = driver.find_element_by_xpath( "//td[@id='content']//h1//span").text print("Link_text : " + sub_m_link_name) print("Head_title : " + head_title2) link_array.append(sub_m_link_name) h1_array.append(head_title2) print(link_array) print(h1_array) assert len(link_array) == len(h1_array)
def test_create_raid(self): """raid5创建""" driver = self.driver login.test_login(self) driver.find_element_by_link_text(u"存储服务管理").click() self.driver.implicitly_wait(10) disk_mgmt = driver.find_element_by_link_text(u"磁盘管理") ActionChains(driver).move_to_element(disk_mgmt).perform() time.sleep(1) driver.find_element_by_xpath( ".//*[@id='toolbar']/ul/li[3]/ul/li/a").click() driver.find_element_by_css_selector( "#disktable_filter > label > input[type=\"search\"]").send_keys( "node-1.yyy") driver.find_element_by_xpath( ".//*[@id='disktable']/thead/tr/th[1]/div/input").click() raid_mgmt = driver.find_element_by_link_text(u"RAID操作") ActionChains(driver).move_to_element(raid_mgmt).perform() driver.find_element_by_link_text(u"创建RAID").click() Select(driver.find_element_by_id( "clusterraidlv")).select_by_visible_text(u"RAID5") time.sleep(1) driver.find_element_by_xpath("(//button[@type='button'])[3]").click() self.driver.implicitly_wait(60) driver.find_element_by_xpath("(//button[@type='button'])[2]").click() #更新磁盘 time.sleep(2) driver.find_element_by_xpath( ".//*[@id='btclusternodedisk_update']").click() self.driver.implicitly_wait(10) driver.find_element_by_xpath("(//button[@type='button'])[2]").click() #删除操作 time.sleep(5) driver.find_element_by_id("disktable").find_element_by_xpath( ".//*[@id='node-1.yyy_md10']/td[2]/dl/dd/a").click() self.driver.implicitly_wait(5) driver.find_element_by_xpath( ".//*[@id='ext-gen1018']/div[3]/div[3]/div/button[2]").click() self.driver.implicitly_wait(60) driver.find_element_by_xpath( ".//*[@id='ext-gen1018']/div[2]/div[3]/div/button").click()
def test_format_disk(self): """格式化磁盘""" driver = self.driver login.test_login(self) driver.find_element_by_link_text(u"存储服务管理").click() self.driver.implicitly_wait(10) disk_mgmt = driver.find_element_by_link_text(u"磁盘管理") ActionChains(driver).move_to_element(disk_mgmt).perform() time.sleep(1) driver.find_element_by_xpath( ".//*[@id='toolbar']/ul/li[3]/ul/li/a").click() driver.find_element_by_xpath( ".//*[@id='disktable']/thead/tr/th[1]/div/input").click() disk_mgmt = driver.find_element_by_link_text(u"磁盘操作") ActionChains(driver).move_to_element(disk_mgmt).perform() driver.find_element_by_link_text(u"格式化磁盘").click() driver.find_element_by_xpath("(//button[@type='button'])[2]").click self.driver.implicitly_wait(30) driver.find_element_by_xpath("(//button[@type='button'])").click
def test_error_in_browsers_log(driver): test_login(driver) driver.get( "http://localhost/litecart/public_html/admin/?app=catalog&doc=catalog&category_id=1" ) # links = driver.find_elements_by_xpath(".//table[@class='dataTable']//td[./img and ./a]/a") links = driver.find_elements( By.CSS_SELECTOR, "table.dataTable [href*='product_id']:not([title]") links_count = len(links) log = [] for i in xrange(links_count): links = driver.find_elements( By.CSS_SELECTOR, "table.dataTable [href*='product_id']:not([title]") links[i].click() print(links[i]) driver.implicitly_wait(60) driver.find_element_by_name("cancel").click() for l in driver.get_log("browser"): log = log.append(l) print(log) assert (log == 0)
def geo_zones(driver, zones_page, flag): if flag == 1: test_login(driver) driver.implicitly_wait(60) driver.get(zones_page) # получим все зоны rows = driver.find_elements_by_xpath( ".//*[@id='table-zones']//tr [not(contains (@class, 'header'))]") zones_name = [] for elements in rows: # теперь пробежим по столбцам текущего tr из цикла column_z = elements.find_elements_by_tag_name("td") zones_name.append(column_z[2].text) # удалим последний элемент. list.pop([i]), потому что это поле используется для фильтров # Удаляет i-ый элемент и возвращает его. Если индекс не указан, удаляется последний элемент zones_name.pop() # print print(zones_name) sorted_zones_list = sorted(zones_name) # print(sorted_zones_list) assert zones_name == sorted_zones_list
def test_create_user(self): driver = self.driver login.test_login(self) driver.find_element_by_link_text(u"存储服务管理").click() setup_service = driver.find_element_by_link_text(u"服务配置") ActionChains(driver).move_to_element(setup_service).perform() driver.find_element_by_link_text(u"共享用户和组").click() self.driver.implicitly_wait(10) driver.find_element_by_link_text(u"新建用户").click() driver.find_element_by_id("user").clear() driver.find_element_by_id("user").send_keys("caoyi") driver.find_element_by_id("comment").clear() driver.find_element_by_id("comment").send_keys("caoyi") driver.find_element_by_id("password").clear() driver.find_element_by_id("password").send_keys("123456") driver.find_element_by_id("authpassword").clear() driver.find_element_by_id("authpassword").send_keys("123456") driver.find_element_by_xpath("(//button[@type='button'])[3]").click() driver.find_element_by_xpath("(//button[@type='button'])[2]").click() driver.find_element_by_xpath( "//table[@id='tblusers']/tbody/tr/td/dl/dd[2]/a").click() driver.find_element_by_xpath("(//button[@type='button'])[3]").click() driver.find_element_by_xpath("(//button[@type='button'])[2]").click()
def test_login(self): login.test_login(self)