def test_fetch_audience_data(self): project_name = self.configAB["Lotame_Viz"]["project_name"] path = os.path.join('testdata', 'sidebar.json') print("location:" + path) proj_page = ProjectPage(self.webdriver, self.config) audience_page = AudiencePage(self.webdriver, self.config) home_page = HomePage(self.webdriver, self.config) with open(path) as file: data = json.load(file) for item in range(len(data)): link = data[item]["link"] # Project selection new_project_name = project_name + '_' + link print(new_project_name) sleep(5) home_page.searchProjects(new_project_name) sleep(10) num_aud_panel = len(self.webdriver.find_elements_by_xpath("//div[@class = 'audiences-section']//audience-panel")) print(num_aud_panel) for i in range (1,num_aud_panel+1): audience_name = self.webdriver.find_element_by_xpath("(//div[@class = 'audience-title ng-binding'])[position()="+str(i)+"]").text individual_count = self.webdriver.find_element_by_xpath("(//div[@class = 'audiences-section']//audience-panel//span[@class = 'id-count ng-binding'])[position()= "+str(i)+"]").text household_count = self.webdriver.find_element_by_xpath("(//div[@class = 'audiences-section']//audience-panel//span[@class = 'hh-count ng-binding'])[position()= "+str(i)+"]").text device_count = self.webdriver.find_element_by_xpath("(//div[@class = 'audiences-section']//audience-panel//span[@class = 'device-count ng-binding'])[position()= "+str(i)+"]").text print(individual_count) file_path = os.path.abspath("Datafile.xlsx") print(file_path) rows = XLUtils.getRowCount(file_path, "aud_data") print(rows) converted_indi = audience_page.convert_str_to_number(individual_count) print(converted_indi) converted_house = audience_page.convert_str_to_number(household_count) print(converted_house) converted_device = audience_page.convert_str_to_number(device_count) print(converted_device) XLUtils.WriteData(file_path, "aud_data", rows + 1, 1, new_project_name) XLUtils.WriteData(file_path, "aud_data", rows + 1, 2, audience_name) #To get the number in human readable format for e.g 1000 to 1k # XLUtils.WriteData(file_path, "aud_data", rows+1, 3 , individual_count) # XLUtils.WriteData(file_path, "aud_data", rows+1, 4 , household_count) # XLUtils.WriteData(file_path, "aud_data", rows+1, 5 , device_count) #To get the number in long format for e.g 1k to 1000, 1M to 1000000 XLUtils.WriteData(file_path, "aud_data", rows + 1, 3, converted_indi) XLUtils.WriteData(file_path, "aud_data", rows + 1, 4, converted_house) XLUtils.WriteData(file_path, "aud_data", rows + 1, 5, converted_device) sleep(10) # Navigating to home screen self.webdriver.switch_to_default_content() home_page.lbl_Audience_Explorer_omni().click() sleep(10) iframe = self.webdriver.find_elements_by_tag_name('iframe')[0] self.webdriver.switch_to.frame(iframe)
def test_create_audience(self): project_name = self.configAB["Lotame_Viz"]["project_name"] path = os.path.join('testdata', 'sidebar.json') print("location:" + path) proj_page = ProjectPage(self.webdriver, self.config) audience_page = AudiencePage(self.webdriver, self.config) home_page = HomePage(self.webdriver, self.config) with open(path) as file: data = json.load(file) for item in range(len(data)): link = data[item]["link"] #Project Creation new_project_name = project_name + '_' + link print(new_project_name) proj_page.createProject(new_project_name, link) sleep(10) #Audience Creation proj_page.add_audience_button().click() sleep(5) audience_page.audience_name_textbox().send_keys('Any Travel') audience_page.add_dataSource('Advanced Audience Data') source = self.webdriver.find_element_by_xpath( "//div[contains(@class,'header-label ng-binding ui-draggable-handle') and contains(text(),'Advanced Audience Data Criteria')]" ) target = self.webdriver.find_element_by_xpath( "//div[contains(@class, 'criteria-panel-header') and contains(text(),'Define Your Audience')]" ) mouse = ActionChains(self.webdriver) mouse.drag_and_drop(source, target).perform() audience_page.create_advanced_audience_data_criteria( 'Purchase History', 'Travel', 'Travel', 'Any Air Travel') audience_page.add_criteria_plusicon().click() audience_page.create_advanced_audience_data_criteria( 'Affinity Audiences', 'Travel', 'Travel', 'Any Travel') sleep(5) self.webdriver.find_element_by_xpath( "//div[contains(@class ,'text ng-binding') and contains(@ng-bind,'i.value')]" ).click() sleep(5) self.webdriver.find_element_by_xpath( "//div[contains(@class ,'ng-binding ng-scope') and contains(text(),'OR')]" ).click() audience_page.save_and_create_button().click() sleep(10) # Navigating to home screen self.webdriver.switch_to_default_content() home_page.lbl_Audience_Explorer_omni().click() sleep(10) iframe = self.webdriver.find_elements_by_tag_name('iframe')[0] self.webdriver.switch_to.frame(iframe) new_project_name = project_name
def test_existingAudience_rename(self): section = self.__class__.__name__ project_name = self.configAB[section]["project_name"] audience_name = self.configAB[section]["audience_name"] new_audience_name = self.configAB[section]["new_audience_name"] home_page = HomePage(self.webdriver, self.config) self.webdriver.switch_to_default_content() home_page.lbl_Audience_Explorer_omni().click() sleep(20) iframe = self.webdriver.find_elements_by_tag_name('iframe')[0] self.webdriver.switch_to.frame(iframe) home_page.searchProjects(project_name) project_page = ProjectPage(self.webdriver, self.config) try: project_page.audience_menu_icon(audience_name).click() project_page.audienceEditIcon(audience_name) audience_page = AudiencePage(self.webdriver, self.config) audience_page.audience_rename(new_audience_name) project_page.AudienceName(new_audience_name).click() #again renaming it back to original project_page.audience_menu_icon(new_audience_name).click() project_page.audienceEditIcon(new_audience_name) audience_page = AudiencePage(self.webdriver, self.config) audience_page.audience_rename(audience_name) project_page.AudienceName(audience_name).click() except: project_page.audience_menu_icon(new_audience_name).click() project_page.audienceEditIcon(new_audience_name) audience_page = AudiencePage(self.webdriver, self.config) audience_page.audience_rename(audience_name) project_page.AudienceName(audience_name).click()
def test_project_searchable_admin_page_export(self): project_name = self.configAB["check_admin_import"]["project_name"] project_objective = self.configAB["check_admin_import"]["objective"] home_page = HomePage(self.webdriver, self.config) audience_page = AudiencePage(self.webdriver, self.config) home_page.searchProjects(project_name) project_page = ProjectPage(self.webdriver, self.config) project_page.project_menu_icon(project_name).click() home_page.project_edit_icon(project_name).click() project_page.AddObjective().clear() sleep(3) audience_page.icon_greentick_objective().click() sleep(5) self.webdriver.switch_to_default_content() home_page.lbl_Audience_Explorer_omni().click() sleep(20) iframe = self.webdriver.find_elements_by_tag_name('iframe')[0] self.webdriver.switch_to.frame(iframe) home_page.cog_button().click() sleep(10) home_page.chk_admin_audience_setting().click() sleep(5) home_page.drp_admin_project().click() sleep(10) self.webdriver.find_element_by_xpath("//option[text()='" + project_name + "']").click() home_page.drp_admin_project().click() self.webdriver.switch_to_default_content() home_page.lbl_Audience_Explorer_omni().click() iframe = self.webdriver.find_elements_by_tag_name('iframe')[0] self.webdriver.switch_to.frame(iframe) sleep(10) home_page.searchProjects(project_name) project_page.project_menu_icon(project_name).click() home_page.project_edit_icon(project_name).click() project_page.AddObjective().send_keys(project_objective) sleep(5) audience_page.icon_greentick_objective().click() sleep(5) self.webdriver.switch_to_default_content() home_page.lbl_Audience_Explorer_omni().click() sleep(20) iframe = self.webdriver.find_elements_by_tag_name('iframe')[0] self.webdriver.switch_to.frame(iframe) home_page.cog_button().click() sleep(10) home_page.chk_admin_audience_setting().click() sleep(5) home_page.drp_admin_project().click() sleep(10) self.webdriver.find_element_by_xpath("//option[text()='" + project_name + "']").click() home_page.drp_admin_project().click()
def test_create_other_audiences(self): project_name = self.configAB["Lotame_Viz"]["project_name"] path = os.path.join('testdata', 'sidebar.json') print("location:" + path) proj_page = ProjectPage(self.webdriver, self.config) audience_page = AudiencePage(self.webdriver, self.config) home_page = HomePage(self.webdriver, self.config) with open(path) as file: data = json.load(file) for item in range(len(data)): link = data[item]["link"] #Project selection new_project_name = project_name + '_' + link print(new_project_name) sleep(5) home_page.searchProjects(new_project_name) sleep(10) #Audience Creation proj_page.add_audience_button().click() sleep(5) audience_page.audience_name_textbox().send_keys('Beauty') audience_page.add_dataSource('Advanced Audience Data') source = self.webdriver.find_element_by_xpath( "//div[contains(@class,'header-label ng-binding ui-draggable-handle') and contains(text(),'Advanced Audience Data Criteria')]" ) target = self.webdriver.find_element_by_xpath( "//div[contains(@class, 'criteria-panel-header') and contains(text(),'Define Your Audience')]" ) mouse = ActionChains(self.webdriver) mouse.drag_and_drop(source, target).perform() audience_page.create_advanced_audience_data_criteria( 'In-Market Audiences', 'Beauty and Wellness', 'Personal Care', 'Cosmetics') audience_page.add_criteria_plusicon().click() audience_page.create_advanced_audience_data_criteria( 'In-Market Audiences', 'Beauty and Wellness', 'Personal Care', 'Hair Care') # audience_page.add_criteria_plusicon().click() # audience_page.create_advanced_audience_data_criteria('Affinity Audiences', 'Lifestyle and Hobbies', 'Literature', 'Family Literature (Fiction)') # audience_page.add_criteria_plusicon().click() # audience_page.create_advanced_audience_data_criteria('Affinity Audiences', 'Lifestyle and Hobbies', 'Literature', 'Family Literature (Non-Fiction)') sleep(5) self.webdriver.find_element_by_xpath( "//div[contains(@class ,'text ng-binding') and contains(@ng-bind,'i.value')]" ).click() sleep(5) self.webdriver.find_element_by_xpath( "//div[contains(@class ,'ng-binding ng-scope') and contains(text(),'OR')]" ).click() # If you have 3 audience criteria's # sleep(5) # self.webdriver.find_element_by_xpath("//div[contains(@class ,'text ng-binding') and contains(@ng-bind,'i.value')]//following::div[contains(@class ,'text ng-binding') and contains(@ng-bind,'i.value')]").click() # sleep(5) # self.webdriver.find_element_by_xpath("//div[contains(@class ,'ng-binding ng-scope') and contains(text(),'OR')]").click() # If you have 4 audience criteria's # sleep(5) # self.webdriver.find_element_by_xpath("//div[contains(@class ,'text ng-binding') and contains(@ng-bind,'i.value')]//following::div[contains(@class ,'text ng-binding') and contains(@ng-bind,'i.value')]//following::div[contains(@class ,'text ng-binding') and contains(@ng-bind,'i.value')]").click() # sleep(5) # # self.webdriver.find_element_by_xpath("//div[contains(@class ,'ng-binding ng-scope') and contains(text(),'OR')]").click() # third_drp_value = self.webdriver.find_element_by_xpath("//div[contains(@class ,'ng-binding ng-scope') and contains(text(),'OR')]") # self.webdriver.execute_script("arguments[0].click();", third_drp_value) audience_page.save_and_create_button().click() sleep(10) # Navigating to home screen self.webdriver.switch_to_default_content() home_page.lbl_Audience_Explorer_omni().click() sleep(10) iframe = self.webdriver.find_elements_by_tag_name('iframe')[0] self.webdriver.switch_to.frame(iframe) new_project_name = project_name