# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. from selenium import webdriver from selenium.common.exceptions import * from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0 from selenium.webdriver.common.action_chains import ActionChains as action from common import Global_Locators from cspages.cspage import CloudStackPage from common.shared import * class DashboardPage(CloudStackPage): def __init__(self, browser): self.browser = browser self.active_item = "" self.items = [] @try_except_decor def get_active_item(self): self.active_item = "" lis = self.browser.find_elements_by_xpath("//*[@id='navigation']/ul/li") for li in lis: if li.get_attribute('class').find('active') > 0: self.active_item = li.get_attribute('class')[:(li.get_attribute('class').index(' active'))] return self.active_item @try_except_decor def get_items(self): lis = self.browser.find_elements_by_xpath("//*[@id='navigation']/ul/li") for li in lis: item = li.get_attribute('class')[len('navigation-item '):] if item.find('active') > 0: item = item[:(item.index(' active'))] if item.find('first') > 0: item = item[:(item.index(' first'))] if item.find('last') > 0: item = item[:(item.index(' last'))] self.items.append(item.lower()) return self.items # import pdb # pdb.set_trace() @try_except_decor def navigate_to(self, item_name): if len(self.items) == 0: self.get_items() if item_name is None or len(item_name) == 0 or \ item_name.lower() not in self.items or \ (len(self.active_item) > 0 and self.active_item.lower().find(item_name.lower()) > 0): return lis = self.browser.find_elements_by_xpath("//*[@id='navigation']/ul/li") for li in lis: if li.get_attribute('class').lower().find(item_name.lower()) > 0: li.click() time.sleep(3) return