def test_download_single_existing_audience(self): section = self.__class__.__name__ project_name = self.configAB["DownloadAudience"]["project_name"] audience_name = self.configAB["DownloadAudience"]["audience_name"] # Delete existing file in workspace path = self.workspace + "\\" + project_name + " - " + audience_name + ".xlsx" print(path) print(glob.glob(path)) for file in glob.glob(path): os.remove(file) home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name) # Download Audience project_page = ProjectPage(self.webdriver, self.config) project_page.audience_menu_icon(audience_name).click() project_page.audience_download_icon(audience_name).click() project_page.audience_data(audience_name).click() sleep(30) path1 = self.workspace + "\\" + project_name + " - " + audience_name + ".xlsx" check = os.path.exists(path1) self.assertEqual(check, True, "Audience download failed") for file in glob.glob(path1): excel_sheet = xlrd.open_workbook(file) sheet1 = excel_sheet.sheet_by_index(0) row = sheet1.row_slice(0) excel_header = row[0].value sheet = excel_sheet.sheet_by_index(0) Cols = "" for i in range(sheet1.ncols): Cols = Cols + str(sheet.cell_value(1, i)) print(excel_header) row_count = sheet.nrows print(Cols) self.assertEqual(excel_header, "Location Data for \"DNT_Auto_Aud02\"", "Column header not matching")
def test_compare_icon_disabled_for_audience_not_meeting_min_threshold( self): section = self.__class__.__name__ project_name = self.configAB[section]["project_name"] audience_name = self.configAB[section]["audience_name"] home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name) project_page = ProjectPage(self.webdriver, self.config) project_page.CompareTrigger().click() try: project_page.AudienceCheckbox(audience_name).click() print("Audience checkbox is enabled") except: print( "This audience is 18% of the minimum audience size Please review and try building again.So, Audience checkbox is disabled" )
def test_compare_chart_percent(self): section = self.__class__.__name__ project_name = self.configAB[section]["project_name"] audience_name1 = self.configAB[section]["audience_name1"] audience_name2 = self.configAB[section]["audience_name2"] home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name) project_page = ProjectPage(self.webdriver, self.config) project_page.CompareTrigger().click() project_page.AudienceCheckbox(audience_name1).click() project_page.AudienceCheckbox(audience_name2).click() sleep(10) project_page.compare_button().click() sleep(10) unit = self.webdriver.find_element_by_xpath( "//div[@class='x-axis']/div[12]/span").text self.assertEqual(unit, "%", "X axis index values are inaccurate")
def test_error_message_at_history_panel(self): section = self.__class__.__name__ project_name = self.configAB[section]["project_name"] audience_name = self.configAB[section]["audience_name"] home_page = HomePage(self.webdriver, self.config) project_page = ProjectPage(self.webdriver, self.config) home_page.searchProjects(project_name) project_page.AudienceName(audience_name).click() project_page.HistoryTab().click() sleep(10) tag = self.webdriver.find_elements_by_xpath( "//audience-history-list/ul/li/audience-history-item/ul[1]/li[2]") message = tag[0].text self.assertEqual( message, "There are no people that match this criteria. Please re-visit criteria selections and try again.", "Incorrect message is getting displayed at History Panel")
def test_audience_history_tag_title(self): rand = my_random_string(3) home_page = HomePage(self.webdriver, self.config) home_page.createProject('Test Proj' + rand, 'NA - United States') sleep(10) project_page = ProjectPage(self.webdriver, self.config) audience_page = AudiencePage(self.webdriver, self.config) project_page.add_audience_button().click() audience_page.audience_name_textbox().send_keys('Test Audience') audience_page.add_dataSource('Purchase Behavior') self.webdriver.find_element_by_xpath( "//select[contains(@ng-model,'criteriaColumnSelector')]").click() self.webdriver.find_element_by_xpath( "//option[text()='Category']").click() self.webdriver.find_element_by_xpath( "//input[@placeholder='Begin typing to search...']").click() self.webdriver.find_element_by_xpath( "//li[contains(text(),'AIR FRESHENERS')]").click() criteria_createButton = self.webdriver.find_element_by_xpath( "//button[contains(@ng-click,'$ctrl.criteriaApply()') and (@class='red-btn')]" ) self.webdriver.execute_script("arguments[0].click();", criteria_createButton) # audience_page.criteria_createButton().click() sleep(5) audience_page.save_audience_button().click() sleep(10) project_page = ProjectPage(self.webdriver, self.config) project_page.AudienceName('Test Audience').click() project_page.HistoryTab().click() project_page.close_history().click() sleep(5) project_page.HistoryTab().click() list = self.webdriver.find_elements_by_xpath( "//audience-history-list/ul/li/audience-history-item/ul/li[1]") for item in list: assert item.text == 'Test Audience' project_page.project_menu_icon('Test Proj' + rand).click() project_page.project_delete_icon('Test Proj' + rand).click() project_page.AlertOkButton().click()
def test_verify_Quarter(self): project_name = self.configAB["Quarter_on_criteria_builder"]["project_name"] audience_name = self.configAB["Quarter_on_criteria_builder"]["audience_name"] home_page = HomePage(self.webdriver, self.config) audience_page = AudiencePage(self.webdriver, self.config) project_page = ProjectPage(self.webdriver, self.config) home_page.searchProjects(project_name) sleep(10) project_page.audience_menu_icon(audience_name).click() project_page.audienceEditIcon(audience_name) sleep(10) data_env = audience_page.lbl_data_env().text # print("This is the value of data environement " + data_env) quarter_time = audience_page.Time_Period().text # print("This is the time period " + quarter_time) self.assertIn(quarter_time, data_env) audience_page.Time_Period_Edit().click() drp_quarter = audience_page.drp_Quarter() dd_quarter = Select(drp_quarter) dd_quarter.select_by_visible_text("Q2 2019") audience_page.btn_quarter_create().click() sleep(15) audience_page.save_audience_button().click() project_page.audience_menu_icon(audience_name).click() project_page.audienceEditIcon(audience_name) self.assertIn(quarter_time, data_env) sleep(10) data_env = audience_page.lbl_data_env().text # print("This is the value of data environement " + data_env) quarter_time = audience_page.Time_Period().text # print("This is the time period " + quarter_time) self.assertIn(quarter_time, data_env) audience_page.Time_Period_Edit().click() drp_quarter = audience_page.drp_Quarter() dd_quarter = Select(drp_quarter) dd_quarter.select_by_visible_text("Q1 2020") audience_page.btn_quarter_create().click() audience_page.save_audience_button().click() project_page.audience_menu_icon(audience_name).click() project_page.audienceEditIcon(audience_name) self.assertIn(quarter_time, data_env)
def test_copy_audience_multiple_criteria(self): section = self.__class__.__name__ project_name = self.configAB[section]["project_name"] audience_name_multiple_source = self.configAB[section][ "audience_name_multiple_source"] home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name) project_page = ProjectPage(self.webdriver, self.config) project_page.audience_menu_icon(audience_name_multiple_source).click() project_page.audienceEditIcon(audience_name_multiple_source) audience_page = AudiencePage(self.webdriver, self.config) audience_page.copy_multiple_audience_criteria_within_self() self.webdriver.find_element_by_xpath( "//div[text()='Insert Copied Criteria']").click() audience_page.delete_audience_criteria("Demographic Data") audience_page.delete_audience_criteria("Location Data")
def test_create_SSA_IG_JS(self): country = self.configAB["Conceptual"]["country"] project_name = self.configAB["Conceptual"]["project_name"] ds_type = "Browsing Behavior" home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name) proj_page = ProjectPage(self.webdriver, self.config) proj_page.add_audience_button().click() audience_page = AudiencePage(self.webdriver, self.config) audience_page.add_dataSource(ds_type) audience_page.create_browsing_behaviour_domain_names('instagram.com') audience_page.audience_name_textbox().clear() audience_page.audience_name_textbox().send_keys(country + " SSA - IG - JS") sleep(10) audience_page.save_and_create_button().click()
def test_population_female(self): country = self.configAB["Conceptual"]["country"] project_name = self.configAB["Conceptual"]["project_name"] ds_type = "Advanced Audience Data" home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name) proj_page = ProjectPage(self.webdriver, self.config) proj_page.add_audience_button().click() audience_page = AudiencePage(self.webdriver, self.config) audience_page.add_dataSource(ds_type) audience_page.create_advanced_audience_data_criteria( 'Demographics', 'Gender', 'Female', 'TRUE') audience_page.audience_name_textbox().clear() audience_page.audience_name_textbox().send_keys(country + " Population Female") sleep(5) audience_page.save_and_create_button().click()
def test_comparebtn_disabled2(self): section = self.__class__.__name__ project_name = self.configAB[section]["project_name"] audience_name = self.configAB[section]["audience_name1"] data_source_name = self.configAB[section]["data_source_name"] home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name) project_page = ProjectPage(self.webdriver, self.config) project_page.CompareTrigger().click() # project_page.DataSource(data_source_name).click() project_page.AudienceCheckbox(audience_name).click() check = "False" try: self.webdriver.find_element_by_xpath( "//div[contains(@class,'compare-btn-disabled')]") except Exception as e: check = "True" self.assertEqual(check, "False", "Compare button is disabled")
def test_created_audience_timestamp(self): project_name = self.configAB["audience_timestamp"]["project_name"] audience_name = self.configAB["audience_timestamp"]["audience_name"] 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.audience_menu_icon(audience_name).click() project_page.audienceEditIcon(audience_name) sleep(10) actual_timestamp = self.webdriver.find_element_by_xpath("//div[contains(@class,'edit-when ng-scope')]").text # print("This is the actual timestamp " + actual_timestamp) date_time = audience_page.lbl_date_time().text user = audience_page.lbl_User().text data_env = audience_page.lbl_data_env().text expected_timestamp = "Last Created" + " " + date_time + " By " + user + " " + data_env assert actual_timestamp.startswith("Last Created") self.assertEqual(actual_timestamp, expected_timestamp)
def test_create_SSA_IG_Lotm(self): country = self.configAB["Conceptual"]["country"] project_name = self.configAB["Conceptual"]["project_name"] ds_type = "Advanced Audience Data" home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name) proj_page = ProjectPage(self.webdriver, self.config) proj_page.add_audience_button().click() audience_page = AudiencePage(self.webdriver, self.config) audience_page.add_dataSource(ds_type) audience_page.create_advanced_audience_data_criteria( 'Affinity Audiences', 'Digital Engagement', 'Social Media', 'Instagram') audience_page.audience_name_textbox().clear() audience_page.audience_name_textbox().send_keys(country + " SSA - IG - Lotm") sleep(5) audience_page.save_and_create_button().click()
def test_tradedesk_rate_card(self): section = self.__class__.__name__ project_name = self.configAB["cpm_rate"]["project_name"] audience_name = self.configAB["cpm_rate"]["audience_name"] #Click on Tradedesk home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name) project_page = ProjectPage(self.webdriver, self.config) project_page.audience_menu_icon(audience_name).click() project_page.audience_share_icon(audience_name).click() self.webdriver.find_element_by_xpath( "//*[text()='" + audience_name + "']//following::div[contains(@class ,distribute-dd-menu)]/div[contains(text(),'Trade Desk')]" ).click() rate = WebDriverWait(self.webdriver, 50).until( EC.visibility_of_element_located( (By.XPATH, "//table[@class='rate-card-table']/tbody/tr/th/span"))).text self.assertEqual(rate, "$1.05", "Trade desk Ratecard Incorrect")
def test_compare_trigger_disabled_single_audience(self): new_project_name = self.configAB["CreateProject"]["new_project_name"] data_env = self.configAB["CreateProject"]["data_env"] home_page = HomePage(self.webdriver, self.config) audience_page = AudiencePage(self.webdriver, self.config) proj_page = ProjectPage(self.webdriver, self.config) home_page.searchProjects(new_project_name) string = my_random_string(3) new_project_name = new_project_name + string proj_page.createProject(new_project_name, data_env) sleep(10) proj_page.add_audience_button().click() sleep(10) audience_page.audience_name_textbox().send_keys('Test Audience') audience_page.add_dataSource('Purchase Behavior') self.webdriver.find_element_by_xpath( "//select[contains(@ng-model,'criteriaColumnSelector')]").click() self.webdriver.find_element_by_xpath( "//option[text()='Category']").click() self.webdriver.find_element_by_xpath( "//input[@placeholder='Begin typing to search...']").click() self.webdriver.find_element_by_xpath( "//li[contains(text(),'AIR FRESHENERS')]").click() criteria_createButton = self.webdriver.find_element_by_xpath( "//button[contains(@ng-click,'$ctrl.criteriaApply()') and (@class='red-btn')]" ) self.webdriver.execute_script("arguments[0].click();", criteria_createButton) sleep(5) audience_page.save_audience_button().click() element = WebDriverWait(self.webdriver, 50).until( EC.visibility_of_element_located( (By.CSS_SELECTOR, ".compare-trigger"))) trigger = element.get_attribute("class") self.assertEqual(trigger, "compare-trigger disabled", "Compare trigger is not disabled") proj_page.deleteProject(new_project_name)
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_edit_new_project(self): project_name = self.configAB["EditNewProject"]["project_name"] data_env = self.configAB["EditNewProject"]["data_env"] new_project_name = self.configAB["EditNewProject"]["new_project_name"] home_page = HomePage(self.webdriver, self.config) proj_page = ProjectPage(self.webdriver, self.config) home_page.createProject(project_name, data_env) proj_name = home_page.edit_project_name(project_name, new_project_name) self.assertEqual(proj_name, new_project_name, "Edit Project failed") self.webdriver.back() self.webdriver.switch_to_default_content() proj_page.lbl_Audience_Explorer_omni().click() sleep(20) # WebDriverWait(self.webdriver, 100).until(EC.visibility_of_element_located((By.XPATH, "//span[text()='Audience Explorer (Omni)']"))).click() # sleep(5) iframe = self.webdriver.find_elements_by_tag_name('iframe')[0] self.webdriver.switch_to.frame(iframe) projectName = home_page.searchProjects(new_project_name) self.assertEqual(new_project_name, projectName, "Project Search failed") proj_page.deleteProject(new_project_name)
def test_filters_single_audience(self): section = self.__class__.__name__ project_name = self.configAB[section]["project_name"] audience_name1 = self.configAB[section]["audience_name1"] home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name) project_page = ProjectPage(self.webdriver, self.config) project_page.AudienceName(audience_name1).click() project_page.bubble_Chart_Icon().click() sleep(5) project_page.view_filters_knob().click() project_page.select_datasource_visualization("Purchase Behavior") project_page.select_category("AIR FRESHENERS") # project_page.select_subcategory("Resources") audience_name = self.webdriver.find_element_by_xpath( "//div[@class='audience-name-label-normal']").text # print(audience_name) self.assertEqual(audience_name, audience_name1, "Comparison chart title incorrect or loading error")
def test_MSOA_MSAA(self): country = self.configAB["Conceptual"]["country"] project_name = self.configAB["Conceptual"]["project_name"] ds_type = "Advanced Audience Data" home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name) proj_page = ProjectPage(self.webdriver, self.config) # proj_page.add_audience_button().click() # # audience_page = AudiencePage(self.webdriver, self.config) # audience_page.add_dataSource(ds_type) # audience_page.create_advanced_audience_data_criteria_multiple_attribute_value('In-Market Audiences', 'Automotive & Vehicles', 'Car Classifications', value=['Luxury SUV', 'Luxury Sedan']) # audience_page.add_dataSource(ds_type) # audience_page.create_browsing_behaviour_domain_names_multiple(name=['acura.com', 'lexus.com', 'bmw.com']) # audience_page.add_dataSource(ds_type) # audience_page.create_browsing_behaviour_domain_names_multiple(name=['acura.com', 'lexus.com', 'bmw.com']) # audience_page.audience_name_textbox().clear() # audience_page.audience_name_textbox().send_keys(country + " MSOA-Lux Auto-JS or Lotm") # sleep(5) # audience_page.save_and_create_button().click() # ############################################### sleep(5) proj_page.add_audience_button().click() audience_page = AudiencePage(self.webdriver, self.config) audience_page.add_dataSource(ds_type) audience_page.create_advanced_audience_data_criteria( 'Demographics', 'Number of Children', '1 OR MORE', 'TRUE') audience_page.add_dataSource('Browsing Behavior') audience_page.create_browsing_behaviour_domain_names_multiple( name=['acura.com', 'lexus.com', 'bmw.com']) # audience_page.add_dataSource(ds_type) # audience_page.create_browsing_behaviour_domain_names_multiple(name=['acura.com', 'lexus.com', 'bmw.com']) audience_page.audience_name_textbox().clear() audience_page.audience_name_textbox().send_keys( country + " MSAA-Lux Auto w Kids-JS or Lotm") sleep(5) audience_page.save_and_create_button().click()
def test_purchase_behaviour(self): project_name = self.configAB["purchase_behaviour"]["project_name"] ds_type = self.configAB["purchase_behaviour"]["ds_type"] home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name) proj_page = ProjectPage(self.webdriver, self.config) proj_page.add_audience_button().click() sleep(10) audience_page = AudiencePage(self.webdriver, self.config) audience_page.add_dataSource(ds_type) sleep(5) cols = self.webdriver.find_elements_by_xpath( "//select[contains(@ng-model,'criteriaColumnSelector')]/option") col = "" for i in cols: col = i.text + col print(col) self.assertEqual(col, "QuintileProduct NameSubcategoryCategory", "Purchase behaviour column list incorrect")
def test_create_advance_data_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) home_page.searchProjects("Test_US_Automation") sleep(10) # Audience Creation using Advanced Audience Data proj_page.add_audience_button().click() sleep(5) audience_page.audience_name_textbox().send_keys('Advance_Audience') 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( 'Food', 'Diet', 'Vegan', '3 Average') audience_page.add_criteria_plusicon().click() audience_page.create_advanced_audience_data_criteria( 'Demographic', 'Education', 'Education - Head of Household', 'Completed College') 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)
def test_download_audiences(self): project_name = self.configAB["Aqfer"]["project_name"] path = os.path.join('testdata', 'sidebar.json') print("location:" + path) project_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 + '_QA' 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) + "]").click() # download_link = self.webdriver.find_element_by_xpath("(//div[@class = 'audiences-section']//div[contains(@class,'download-button')])[position()= "+str(i)+"]") # download_link.click() # audience_menu_icon = self.webdriver.find_element_by_xpath("//div[text()='" + audience_name + "']//following::div[1]") self.webdriver.execute_script( "arguments[0].click();", project_page.audience_menu_icon(audience_name)) self.webdriver.execute_script( "arguments[0].click();", project_page.audience_download_icon(audience_name)) self.webdriver.execute_script( "arguments[0].click();", project_page.audience_data(audience_name))
def test_create_MSSA_IG_and(self): country = self.configAB["Conceptual"]["country"] project_name = self.configAB["Conceptual"]["project_name"] home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name) proj_page = ProjectPage(self.webdriver, self.config) proj_page.add_audience_button().click() audience_page = AudiencePage(self.webdriver, self.config) audience_page.add_dataSource('Browsing Behavior') audience_page.create_browsing_behaviour_domain_names('instagram.com') sleep(5) audience_page.add_dataSource('Advanced Audience Data') audience_page.create_advanced_audience_data_criteria( 'Affinity Audiences', 'Digital Engagement', 'Social Media', 'Instagram') audience_page.audience_name_textbox().clear() audience_page.audience_name_textbox().send_keys( country + " MSOA - IG - JS and Lotm") sleep(5) audience_page.save_and_create_button().click()
def test_data_source_visualization(self): section = self.__class__.__name__ project_name = self.configAB[section]["project_name"] audience_name1 = self.configAB[section]["audience_name1"] audience_name2 = self.configAB[section]["audience_name2"] home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name) project_page = ProjectPage(self.webdriver, self.config) project_page.CompareTrigger().click() project_page.AudienceCheckbox(audience_name1).click() project_page.AudienceCheckbox(audience_name2).click() sleep(10) project_page.compare_button().click() sleep(10) project_page.view_filters_knob().click() try: project_page.select_datasource_visualization("Browsing Behavior") project_page.select_datasource_visualization("Purchase Behavior") project_page.select_datasource_visualization("Location Data") except: pass
def test_audience_checkbox_disable_after_selecting_third_audience(self): section = self.__class__.__name__ project_name = self.configAB[section]["project_name"] audience_name1 = self.configAB[section]["audience_name1"] audience_name2 = self.configAB[section]["audience_name2"] audience_name3 = self.configAB[section]["audience_name3"] audience_name4 = self.configAB[section]["audience_name4"] home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name) project_page = ProjectPage(self.webdriver, self.config) project_page.CompareTrigger().click() project_page.AudienceCheckbox(audience_name1).click() project_page.AudienceCheckbox(audience_name2).click() project_page.AudienceCheckbox(audience_name3).click() sleep(10) check = (self.webdriver.find_element_by_xpath( "//div[contains(text(),'" + audience_name4 + "')]//parent::div//parent::div")).get_attribute('class') self.assertEqual( check, "audience-panel native-audience disabled", "Audience checkbox disable functionality not working.")
def test_distribution_disable_feature(self): section = self.__class__.__name__ project_name = self.configAB[section]["project_name"] audience_name = self.configAB[section]["audience_name"] home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name) project_page = ProjectPage(self.webdriver, self.config) project_page.audience_menu_icon(audience_name).click() project_page.audience_share_icon(audience_name).click() ele = self.webdriver.find_element_by_xpath( "//*[text()='" + audience_name + "']//following::div[contains(@class ,distribute-dd-menu)]/div[contains(text(),'Consumer Journey')]" ) text = ele.get_attribute('class') print(text) CI_text = self.webdriver.find_element_by_xpath( "//*[text()='" + audience_name + "']//following::div[contains(@class ,distribute-dd-menu)]/div[contains(text(),'Content Inspiration')]" ).get_attribute('class') print(CI_text)
def test_create_ssa_any_social_js(self): country = self.configAB["Conceptual"]["country"] project_name = self.configAB["Conceptual"]["project_name"] ds_type = "Browsing Behavior" home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name) proj_page = ProjectPage(self.webdriver, self.config) proj_page.add_audience_button().click() audience_page = AudiencePage(self.webdriver, self.config) audience_page.add_dataSource(ds_type) # audience_page.create_browsing_behaviour_domain_categories_multiple_sub_category('Social Media',sub_category=['Blogs','Social Networking']) audience_page.create_browsing_behaviour_domain_categories_single_sub_category( 'Social Media', 'Blogs') audience_page.add_dataSource(ds_type) audience_page.create_browsing_behaviour_domain_categories_single_sub_category( 'Social Media', 'Social Networking') audience_page.audience_name_textbox().clear() audience_page.audience_name_textbox().send_keys( country + " SSA - Any Social - JS") sleep(10) audience_page.save_and_create_button().click()
def test_content_inspiration(self): project_name = self.configAB["Conceptual"]["project_name"] home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name) project_page = ProjectPage(self.webdriver, self.config) aud_list = self.webdriver.find_elements_by_xpath( "//div[contains(@class ,'audience-title')]") for aud in aud_list: audience_name = str(aud.text) try: project_page.audience_menu_icon(audience_name).click() project_page.audience_share_icon(audience_name).click() project_page.ContentInspiration(audience_name) except Exception as e: print(audience_name, e) aud_name = [] individual_count = [] aud_list = self.webdriver.find_elements_by_xpath( "//div[contains(@class ,'audience-title')]") for aud in aud_list: name = str(aud.text) aud_name.append(name) aud_list = self.webdriver.find_elements_by_xpath( "//div[contains(@class ,'audience-title')]/following::div[@class='audience-info-item'][1]/div" ) for aud in aud_list: count = str(aud.text) individual_count.append(count) df = pd.DataFrame() df['aud_names'] = aud_name df['individual_count'] = individual_count print(df)
def test_verify_activation_rate_and_CPM_value(self): section = self.__class__.__name__ project_name = self.configAB["cpm_rate"]["project_name"] audience_name = self.configAB["cpm_rate"]["audience_name"] home_page = HomePage(self.webdriver, self.config) project_page = ProjectPage(self.webdriver, self.config) audience_page = AudiencePage(self.webdriver, self.config) home_page.searchProjects(project_name) project_page.audience_menu_icon(audience_name).click() project_page.audience_share_icon(audience_name).click() self.webdriver.find_element_by_xpath( "//*[text()='" + audience_name + "']//following::div[contains(@class ,distribute-dd-menu)]/div[contains(text(),'Trade Desk')]" ).click() CPM_rate = WebDriverWait(self.webdriver, 50).until( EC.visibility_of_element_located( (By.XPATH, "//table[@class='rate-card-table']/tbody/tr/th/span"))).text print(CPM_rate) self.webdriver.find_element_by_xpath( "//button[contains(@ng-click,'btn.onClick()')]//following::span[text()='Cancel']" ).click() project_page.audience_menu_icon(audience_name).click() project_page.audienceEditIcon(audience_name) activation_rate = WebDriverWait(self.webdriver, 50).until( EC.visibility_of_element_located( (By.XPATH, "//span[contains(@class,'cost')]"))).text print(activation_rate) self.assertEqual(activation_rate, CPM_rate, 'Activation rate & CPM rate is not same') audience_page.aud_back_arrow().click()
def test_verify_activation_rate_on_copy_criteria(self): section = self.__class__.__name__ project_name_act_rate = self.configAB["cpm_rate"][ "project_name_act_rate"] source_audience_name = self.configAB["cpm_rate"][ "source_audience_name"] home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name_act_rate) project_page = ProjectPage(self.webdriver, self.config) project_page.audience_menu_icon(source_audience_name).click() project_page.audienceEditIcon(source_audience_name) audience_page = AudiencePage(self.webdriver, self.config) activation_rate1 = WebDriverWait(self.webdriver, 50).until( EC.visibility_of_element_located( (By.XPATH, "//span[contains(@class,'cost')]"))).text audience_page.copy_audience_criteria_within_self("Location Data") self.webdriver.find_element_by_xpath( "//div[@class='sources-panel']/div[1]").click() #Opening criteria builder page project_page.AddAudienceButton().click() sleep(5) self.webdriver.find_element_by_xpath( "//div[text()='Insert Copied Criteria']").click() activation_rate2 = WebDriverWait(self.webdriver, 50).until( EC.visibility_of_element_located( (By.XPATH, "//span[contains(@class,'cost')]"))).text self.assertEqual(activation_rate1, activation_rate2, 'Activation rate differ after copy') audience_page.aud_back_arrow().click()
def test_create_audience_population(self): country = self.configAB["Conceptual"]["country"] project_name = self.configAB["Conceptual"]["project_name"] ds_type = "Advanced Audience Data" home_page = HomePage(self.webdriver, self.config) home_page.searchProjects(project_name) for age_range in ['18-24', '25-34', '35-44', '45-54', '55-64', '65+']: proj_page = ProjectPage(self.webdriver, self.config) proj_page.add_audience_button().click() audience_page = AudiencePage(self.webdriver, self.config) audience_page.add_dataSource(ds_type) # audience_page.create_advanced_audience_data_criteria('Demographics', 'Age', age_range, 'TRUE') audience_page.create_advanced_audience_data_criteria( 'Demographics', 'Age', 'Age Group', age_range) audience_page.audience_name_textbox().clear() audience_page.audience_name_textbox().send_keys(country + " Population " + age_range) sleep(5) audience_page.save_and_create_button().click()