def start_service(self): self.logger.info(u"%sstart service%s\n" % ('+' * 12, '+' * 12)) endtime = time.time() + 1200 fail = 1 while time.time() < endtime: result = get_element_attribute( find_elements( self.driver, By.CSS_SELECTOR, "#commandDetailsStep>div>div:first-child>h2:first-child>i:first-child" )[0], "class") if u"error" in result and fail == 1: fail = fail + 1 click_element(self.driver, By.LINK_TEXT, "Retry") elif u"error" in result and fail == 2: return FuncResult(False, u"start service", caputre(self.driver)) elif u"success" in result: break else: time.sleep(5) time.sleep(2) click_element(self.driver, By.CSS_SELECTOR, "#bottomButtons button[data-bind*=\"onClickContinue\"]") time.sleep(1) ele_text = get_element_text(self.driver, By.CSS_SELECTOR, "#finishStep h2") ret = u"Congratulations!" in ele_text return FuncResult(ret, u"start service", caputre(self.driver))
def install_parcels(self): self.logger.info(u"%sInstalling Selected Parcels%s\n" % ('+' * 12, '+' * 12)) install_schedule_ele = find_elements( self.driver, By.CSS_SELECTOR, ".parcel-header>div[data-bind$=\"Activation\"]>div>div") unpack_schedule_ele = find_elements( self.driver, By.CSS_SELECTOR, "div[data-bind*=\"unpackedPercent\"]")[0] destribute_schedule_ele = find_elements( self.driver, By.CSS_SELECTOR, "div[data-bind*=\"distributionProgress\"]")[0] endtime = time.time() + 1200 while time.time() < endtime: unpack_schedule = get_element_attribute(unpack_schedule_ele, "style") destribute_schedule = get_element_attribute( destribute_schedule_ele, "style") self.logger.info(u"Distribute schedule:%s || unpack schedule:%s " % (destribute_schedule, unpack_schedule)) install_schedule_list = map( get_element_attribute, install_schedule_ele, ["style" for _ in install_schedule_ele]) if len(set(install_schedule_list) ) == 1 and u"width: 100%;" in install_schedule_list: break else: time.sleep(3) time.sleep(3) next_button_attr = get_element_attribute( find_elements(self.driver, By.CSS_SELECTOR, ".btn.btn-large.btn-primary")[0], "disabled") if next_button_attr == 0: return FuncResult(False, u"Installing Selected Parcels", caputre(self.driver)) else: click_element(self.driver, By.CSS_SELECTOR, ".btn.btn-large.btn-primary") time.sleep(1) ele_text = get_element_text(self.driver, By.CSS_SELECTOR, "#hostInspectorStep>div>h2") ret = u"Inspect hosts for correctness" in ele_text return FuncResult(ret, u"Installing Selected Parcels", caputre(self.driver))
def verify_install_result(self, ele_select, endtime, para): status = '' while time.time() < endtime: status = get_element_attribute( find_elements(self.driver, By.CSS_SELECTOR, ele_select)[0], "class") if para == status: break else: time.sleep(3) return status
def Assign_role(self): self.logger.info(u"%sAssign role%s\n" % ('+' * 12, '+' * 12)) role_name_list = map( lambda x: x.text, find_elements(self.driver, By.CSS_SELECTOR, ".label-service-kafka+.name")) for rolename in self.data.keys(): if self.data[rolename]: rolename_index = get_ele_index(role_name_list, rolename) if rolename_index != None: self.logger.info( "%s : $('div:nth-child(%s)>div>.role-type-btn').click()" % ( rolename, rolename_index + 1, )) self.driver.execute_script( "$('div:nth-child(%s)>div>.role-type-btn').click()" % (rolename_index + 1, )) role_checkbox_list = find_elements(self.driver, By.CSS_SELECTOR, "tbody i") role_hostname = map( lambda x: x.text, find_elements(self.driver, By.CSS_SELECTOR, "tbody>tr>td[data-bind$=\"hostName\"]")) for checkbox in role_checkbox_list: if u" check" in get_element_attribute( checkbox, "class"): checkbox.click() time.sleep(0.5) for hostname in self.data[rolename]: hostname_index = get_ele_index(role_hostname, hostname) if hostname_index != None: role_checkbox_list[hostname_index].click() else: self.logger.error(u"host name is invalid") if not click_element( self.driver, By.CSS_SELECTOR, "form #modalDialog .modal-footer>.btn+.btn"): return FuncResult( False, "kafka install select host:%s" % rolename) else: self.logger.error(u"Kafka rolename:%s is invalid") click_element(self.driver, By.CSS_SELECTOR, "button[data-bind*=\"onClickContinue\"]") time.sleep(3) ele_text = get_element_text(self.driver, By.CSS_SELECTOR, "#reviewStep h2") ret = u"Review Changes" in ele_text return FuncResult(ret, "kafka assign role")
def add_role(self): self.logger.info(u"%sdploy role%s\n" % ('+' * 12, '+' * 12)) self.logger.info(self.data) if self.data["host_role_default"] == "no": service_name_list = map( lambda x: x.text, find_elements(self.driver, By.CSS_SELECTOR, ".row h3 span")) for service_name in self.data["host_role"].keys(): self.logger.info(service_name) service_name_index = get_ele_index(service_name_list, service_name) service_role_name_list = map( lambda x: x.text, find_elements( self.driver, By.CSS_SELECTOR, ".row:nth-child(%s) .name" % (4 + 2 * service_name_index, ))) # self.logger.info(service_role_name_list) # service_role_ele_list=find_elements(self.driver, By.CSS_SELECTOR,".row:nth-child(%s) div>a") for role_name in self.data["host_role"][service_name].keys(): time.sleep(1) self.logger.info(role_name) role_index = get_ele_index(service_role_name_list, role_name) if self.data["host_role"][service_name][ role_name] and role_index != None: if verify_element( self.driver, By.CSS_SELECTOR, ".row:nth-child(%s)>.span3:nth-child(%s)>div+div>a+ul" % (4 + 2 * service_name_index, 1 + role_index)): self.logger.info( "$('.row:nth-child(%s)>.span3:nth-child(%s)>div+div>a+ul>li>a[data-bind*=\"Custom\"]').click()" % (4 + 2 * service_name_index, 1 + role_index)) self.driver.execute_script( "$('.row:nth-child(%s)>.span3:nth-child(%s)>div+div>a+ul>li>a[data-bind*=\"Custom\"]').click()" % (4 + 2 * service_name_index, 1 + role_index)) else: self.logger.info( "$('.row:nth-child(%s)>.span3:nth-child(%s)>div+div>a').click()" % (4 + 2 * service_name_index, 1 + role_index)) self.driver.execute_script( "$('.row:nth-child(%s)>.span3:nth-child(%s)>div+div>a').click()" % (4 + 2 * service_name_index, 1 + role_index)) role_checkbox_list = find_elements( self.driver, By.CSS_SELECTOR, "tbody i") role_hostname = map( lambda x: x.text, find_elements( self.driver, By.CSS_SELECTOR, "tbody>tr>td[data-bind$=\"hostName\"]")) for checkbox in role_checkbox_list: if u" check" in get_element_attribute( checkbox, "class"): checkbox.click() time.sleep(0.5) for hostname in self.data["host_role"][service_name][ role_name]: self.logger.info(hostname) hostname_index = get_ele_index( role_hostname, hostname) if hostname_index != None: role_checkbox_list[hostname_index].click() else: self.logger.error(u"host name is invalid") if not click_element( self.driver, By.CSS_SELECTOR, "form #modalDialog .modal-footer>.btn+.btn"): click_element( self.driver, By.CSS_SELECTOR, "form #modalDialog .modal-footer>.dismissButton" ) # ok_button=find_elements(self.driver,By.CSS_SELECTOR,"form #modalDialog .modal-footer>.btn-primary")[0] # if get_element_attribute(ok_button,"disabled")==0: # ok_button.click() # else: # click_element(self.driver,By.CSS_SELECTOR, "form #modalDialog .modal-footer>.btn+.btn") elif self.data["host_role_default"] == "yes": pass click_element(self.driver, By.CSS_SELECTOR, "button[data-bind*=\"onClickContinue\"]") ele_text = get_element_text(self.driver, By.CSS_SELECTOR, ".db-test-connection-view>h2") ret = ele_text == u"Database Setup" return FuncResult(ret, u"dploy role", caputre(self.driver))