Example #1
0
    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()
Example #13
0
    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)
Example #15
0
    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()
Example #19
0
    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")
Example #20
0
    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))
Example #22
0
    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()
Example #27
0
    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)
Example #28
0
    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()
Example #29
0
    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()