LAZADA推广统计

#!/usr/bin/python3
# -- coding: UTF-8 --
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import ElementClickInterceptedException
import time
import xlrd
import xlwings as xw
import pyautogui
import csv

options = webdriver.ChromeOptions()
# 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_argument('--ignore-certificate-errors')
driver = webdriver.Chrome(options=options)
options = webdriver.ChromeOptions()
chains = ActionChains(driver)

driver.set_window_size(1500, 1000)

login_url = "https://gsp.lazada-seller.cn/page/login"


# 判断语句
def isElementExist(self):  # xpath
    # print(self)
    flag = True
    # print(flag)
    try:
        driver.find_element_by_xpath(self)
        # print(driver.find_element_by_css_selector(self))
        return flag
    except:
        flag = False
        return flag


def id_exist(self):
    # print(self)
    flag = True
    # print(flag)
    try:
        driver.find_element_by_id(self)
        # print(driver.find_element_by_css_selector(self))
        return flag
    except:
        flag = False
        return flag


def try_login(username, password):
    # 找到用户名输入框,输入账号
    login_name = driver.find_element_by_id("fm-login-id")
    # 输入账号
    login_name.send_keys(username)
    time.sleep(4)
    # 找到密码输入框,输入密码
    login_password = driver.find_element_by_id("fm-login-password")
    # 输入密码
    login_password.send_keys(password)

    # 找到登陆框
    login_button_1 = driver.find_element_by_id("fm-login-submit")
    time.sleep(2)
    # 通过链的方式模拟登陆
    login_button_1.click()
    time.sleep(3)

    # 刷新一下
    driver.refresh()
    time.sleep(2)


# 找到活动页
def try_promotions():
    chains.move_to_element(driver.find_element_by_xpath("//*[contains(text(),'Promotions')]")).perform()
    time.sleep(2)
    # 有时候点击不了
    flag = isElementExist(
        "//div[2]/ul/li[7]/div/span/div/a")
    if flag:
        driver.find_element_by_xpath(
            "//div[2]/ul/li[7]/div/span/div/a").click()  # 推广中心
        time.sleep(2)
        print('推广页已跳转')
    else:
        driver.refresh()
        time.sleep(2)
        print('推广页未找到')


def x_exist():
    time.sleep(2)
    # flag = isElementExist("//div[@class='guide-item ']/span[1]")
    Close = isElementExist("//*[@id='product-ads']/div[3]/div[2]/a/i")
    Dialog = isElementExist("//*[@id='dialog-tc-no-auth']/div/div[2]/div[1]/div/div[2]/label/span/input")

    if Close:
        time.sleep(3)
        # print('第一个x键已找到')
        driver.find_element_by_xpath("//*[@id='product-ads']/div[3]/div[2]/a/i").click()  # 活动中心
        time.sleep(2)
        return
    elif Dialog:
        driver.find_element_by_xpath("//*[@id='dialog-tc-no-auth']/div/div[2]/div[1]/div/div[2]/label/span/input").click()  # 活动中心
        time.sleep(2)
        driver.find_element_by_xpath("//*[@id='dialog-tc-no-auth']/div/div[2]/div[2]/button/span").click()  # 活动中心
        time.sleep(2)
        return

    else:
        # j += j
        time.sleep(5)
        # driver.refresh()
        print('没有其他窗口')
        return


def alert():
    Save = isElementExist("//button[contains(text(),'Save')]")
    Accept = isElementExist("//button[contains(text(),'Accept')]")
    Agree = isElementExist("//button[contains(text(),'Agree')]")
    if Save:
        driver.find_element_by_xpath("//button[contains(text(),'Save')]").click()  #
        time.sleep(2)
        return
    elif Accept:
        driver.find_element_by_xpath("//button[contains(text(),'Accept')]").click()  #
        time.sleep(2)
        return
    elif Agree:
        driver.find_element_by_xpath("//button[contains(text(),'Agree')]").click()  #
        time.sleep(2)
        return
    else:
        return


def zan():
    time.sleep(0.5)  # 等待 0.5 秒
    left, top, width, height = pyautogui.locateOnScreen('desktop.png')  # 寻找 点赞图片;
    center = pyautogui.center((left, top, width, height))  # 寻找 图片的中心
    pyautogui.doubleClick(center)  # 点击
    # print('点赞成功!')


def export_excel():
    # 用excel表格
    chains.move_to_element(driver.find_element_by_xpath("//button[contains(text(),'Submit by Excel')]")).perform()
    time.sleep(2)
    # Export Excel
    driver.find_element_by_xpath("//*[contains(text(),'Export Excel')]").click()  #
    time.sleep(25)

    # download########等待下载时间
    flag = isElementExist("//a[contains(text(),'Download')]/i")

    for k in range(1, 10):
        if flag:
            print('有可以下载了的')
            break
        else:
            time.sleep(60)
            print('耐心等待下载中')

    flag = isElementExist("//a[contains(text(),'Download')]/i")
    if flag:
        download = driver.find_element_by_xpath("//a[contains(text(),'Download')]/i")  #
        rightClick = ActionChains(driver)  # 实例化ActionChains类
        rightClick.context_click(download).perform()  # context_click(logo)在logo上执行右键操作,perform()是一个执行动作
        time.sleep(2)
        pyautogui.typewrite(['down', 'down', 'down', 'down'])  # 选中右键菜单中第2个选项 # 这个记得在浏览器里面?
        time.sleep(2)
        pyautogui.typewrite(['enter'])  # 最后一个按键: mac电脑用的return,Windows应用enter
        time.sleep(2)
        pyautogui.click(x=285, y=567, button='left')
        time.sleep(1)
        pyautogui.keyDown('ctrl')
        time.sleep(2)
        pyautogui.keyDown('a')
        time.sleep(2)
        pyautogui.keyUp('ctrl')
        time.sleep(2)
        pyautogui.keyUp('a')
        time.sleep(2)
        pyautogui.press('backspace')
        time.sleep(1)
        pyautogui.click(x=285, y=567, button='left')
        time.sleep(2)
        pyautogui.typewrite('test.xlsx', interval=0.25)
        time.sleep(2)
        pyautogui.press('enter')  # 按下并松开(轻敲)回车键
        time.sleep(2)
        pyautogui.press('enter')  # 按下并松开(轻敲)回车键
        time.sleep(1)
        pyautogui.press('left')  # 按下并松开(轻敲)回车键
        time.sleep(2)
        pyautogui.press('enter')  # 按下并松开(轻敲)回车键
        time.sleep(10)
        print("表格下载完成")
        ###导入表格处理######
    else:
        print('等待时间过长,需要纯点击版')
        return

    app = xw.App(visible=True, add_book=False)
    app.display_alerts = False
    app.screen_updating = True  # excel 是否展示内容
    test = r'C:\Users\Administrator\Downloads\test.xlsx'
    promotion = r'C:\Users\Administrator\Desktop\promotion.xlsm'
    wb_promotion = app.books.open(promotion)
    time.sleep(3)
    wb_test = app.books.open(test)
    wb_test.activate(steal_focus=True)
    time.sleep(10)
    pyautogui.hotkey('ctrl', 'q')
    time.sleep(10)
    wb_promotion.close()
    app.quit()
    print("VBA执行完成")
    time.sleep(5)

    ####导入表格####
    driver.find_element_by_xpath(
        "//*[@data-spm='importexcel']").click()  #
    time.sleep(2)

    driver.find_element_by_xpath("//*[@class='block']").click()  # +号提交
    time.sleep(3)

    # 105 169# 点击桌面
    if pyautogui.locateOnScreen('desktop.png'):
        zan()  # 调用点赞函数
    else:
        print('没有找到目标')
    time.sleep(3)
    '''
    pyautogui.moveTo(x=285, y=567, duration=0.5)
    pyautogui.click(button='left')  #
    time.sleep(3)
    '''
    # 256 642 #点击输入框 活动报名xlsx
    pyautogui.click(x=256, y=642, button='left')
    time.sleep(1)
    pyautogui.typewrite('promotionimport.xlsx', interval=0.25)
    time.sleep(5)
    pyautogui.press('enter')  # 按下并松开(轻敲)回车键
    time.sleep(2)
    pyautogui.press('enter')  # 按下并松开(轻敲)回车键
    time.sleep(2)

    for handle in driver.window_handles:
        # 先切换到该窗口
        driver.switch_to.window(handle)
        # 得到该窗口的标题栏字符串,判断是不是我们要操作的那个窗口
        if 'Lazada Cross Bordaer' in driver.title:
            # 如果是,那么这时候WebDriver对象就是对应的该该窗口,正好,跳出循环,
            break
    driver.close()
    time.sleep(2)

    for handle in driver.window_handles:
        # 先切换到该窗口
        driver.switch_to.window(handle)
        # 得到该窗口的标题栏字符串,判断是不是我们要操作的那个窗口
        if 'Seller Center' in driver.title:
            # 如果是,那么这时候WebDriver对象就是对应的该该窗口,正好,跳出循环,
            break

    try:
        driver.find_element_by_xpath("//button[contains(text(),'Ok')]").click()  # 提交
        time.sleep(10)
    except NoSuchElementException:
        return

    time.sleep(2)


def MY_promotion(username):
    time.sleep(5)
    ##点击推广详情
    try:
        driver.find_element_by_xpath("//*[@id='product-ads']/div[2]/div[3]/div/div[2]/div/div/div/div[6]/div/div[2]/section/div/div[2]/div[3]/div[2]/div[2]/table/tbody/tr/td[2]/div/div/div/div/div[1]/a").click()
        time.sleep(2)
    except NoSuchElementException:
        return

    #点击时间轴
    try:
        driver.find_element_by_xpath(
            "//div[2]/span/input").click()
        time.sleep(5)
    except NoSuchElementException:
        return

    # 点击过去30天  7月1号 -7月 31号
    try:
        #向上一个月
        driver.find_element_by_xpath("//*[@id='product-ads']/div[4]/div/div/div/div/div[1]/div[1]/div[2]/div[1]/div/a[2]").click()
        time.sleep(2)
        driver.find_element_by_xpath("//*[@id='product-ads']/div[4]/div/div/div/div/div[1]/div[1]/div[2]/div[2]/table/tbody/tr[1]/td[6]/div").click()
        time.sleep(2)
        driver.find_element_by_xpath("//*[@id='product-ads']/div[4]/div/div/div/div/div[1]/div[1]/div[2]/div[2]/table/tbody/tr[6]/td[1]/div").click()
        time.sleep(2)
    except NoSuchElementException:
        return


    spend = driver.find_elements_by_xpath("//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[1]/div[2]/div/span[2]")
    Impressions = driver.find_elements_by_xpath("//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[2]/div[2]/div/span[2]")
    Clicks = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[3]/div[2]/div/span[2]")
    CTR = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[4]/div[2]/div/span[1]")
    CPC = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[5]/div[2]/div/span[2]")
    StoreUnitsSold = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[6]/div[2]/div/span[2]")
    StoreRevenue = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[7]/div[2]/div/span[2]")
    StoreROI = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[8]/div[2]/div/span[2]")

    spend_1 = spend[0].text.replace('MYR','')
    Impressions_1 = Impressions[0].text
    Clicks_1 = Clicks[0].text
    CTR_1 = CTR[0].text
    CPC_1 = CPC[0].text
    StoreUnitsSold_1 = StoreUnitsSold[0].text
    StoreRevenue_1 = StoreRevenue[0].text.replace('MYR','')
    StoreROI_1 = StoreROI[0].text

    datas = []
    item = {}
    item['spend'] = spend_1
    item['Impressions'] = Impressions_1
    item['Clicks'] = Clicks_1
    item['CTR'] = CTR_1
    item['CPC'] = CPC_1
    item['StoreUnitsSold'] = StoreUnitsSold_1
    item['StoreRevenue'] = StoreRevenue_1
    item['StoreROI'] = StoreROI_1
    item['username']=username
    # dic = item
    datas.append(item)
    print(datas)

    header = ['username','spend', 'Impressions', 'Clicks', 'CTR', 'CPC','StoreUnitsSold','StoreRevenue','StoreROI']
    with open('test0801.csv', 'a', newline='', encoding='utf-8') as f:
        writer = csv.DictWriter(f, fieldnames=header)  # 提前预览列名,当下面代码写入数据时,会将其一一对应。
        writer.writeheader()  # 写入列名
        writer.writerows(datas)  # 写入数据


    # ele_1 = driver.find_elements_by_xpath("//tr/td[5]/div/span")
    # ele_2 = driver.find_elements_by_xpath("//tr/td[9]/div/div/div/span/input")
    # # ele_2[0]
    # for k in range(0, len(ele_1)):
    #     a = float(ele_2[k].get_attribute("value"))
    #     b = float(ele_1[k].text)
    #     judge = a / b
    #     print(a, b, judge)
    #     if judge < 0.85:
    #         ele_3 = driver.find_elements_by_xpath("//tr/td[1]/div/label/span/input")
    #         # target = driver.find_element_by_id("id_keypair")
    #         driver.execute_script("arguments[0].scrollIntoView();", ele_3[k])  # 拖动到可见的元素去
    #         time.sleep(2)
    #         ele_3[k].click()
    #         time.sleep(1)
    #     else:
    #         continue
    #
    # time.sleep(2)
    # # export_excel()  # 导出表格并调用宏处理 ,不能后台独立运行
    # # 这里可以接循环,因为 提交一次后并不准
    # ele_4 = driver.find_element_by_xpath("//button[contains(text(),'Join!')]").get_attribute("disabled")
    # print(ele_4)  # > true 就代表点击不了 None 才代表可点击
    # if ele_4 == None:
    #     # for e in range(0,3):
    #     #     driver.find_element_by_xpath("//button[contains(text(),'Join!')]").click()
    #     #     ele_5 = driver.find_element_by_xpath("//button[contains(text(),'Join!')]").get_attribute("disabled")
    #     #     if bool(ele_5)== False :
    #     #         break
    #     driver.find_element_by_xpath("//button[contains(text(),'Join!')]").click()
    #     time.sleep(5)
    #     print('MY站已报名成功')
    # else:
    #     pass
    #
    # time.sleep(2)


def PH_promotion(username):
    time.sleep(5)
    ##点击推广详情
    try:
        driver.find_element_by_xpath(
            "*//div/div[2]/div/div/div/div[6]/div/div[2]/section/div/div[2]/div[3]/div[2]/div[2]/table/tbody/tr/td[2]/div/div/div/div/div[1]/a").click()
        time.sleep(2)
    except NoSuchElementException:
        return

    # 点击时间轴
    try:
        driver.find_element_by_xpath(
            "//div[2]/span/input").click()
        time.sleep(5)
    except NoSuchElementException:
        return

    # 点击过去30天  7月1号 -7月 31号
    try:
        # 向上一个月
        driver.find_element_by_xpath(
            "//*[@id='product-ads']/div[4]/div/div/div/div/div[1]/div[1]/div[2]/div[1]/div/a[2]").click()
        time.sleep(2)
        driver.find_element_by_xpath(
            "//*[@id='product-ads']/div[4]/div/div/div/div/div[1]/div[1]/div[2]/div[2]/table/tbody/tr[1]/td[6]/div").click()
        time.sleep(2)
        driver.find_element_by_xpath(
            "//*[@id='product-ads']/div[4]/div/div/div/div/div[1]/div[1]/div[2]/div[2]/table/tbody/tr[6]/td[1]/div").click()
        time.sleep(2)
    except NoSuchElementException:
        return

    spend = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[1]/div[2]/div/span[2]")
    Impressions = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[2]/div[2]/div/span[2]")
    Clicks = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[3]/div[2]/div/span[2]")
    CTR = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[4]/div[2]/div/span[1]")
    CPC = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[5]/div[2]/div/span[2]")
    StoreUnitsSold = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[6]/div[2]/div/span[2]")
    StoreRevenue = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[7]/div[2]/div/span[2]")
    StoreROI = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[8]/div[2]/div/span[2]")

    spend_1 = spend[0].text.replace('PHP', '')
    Impressions_1 = Impressions[0].text
    Clicks_1 = Clicks[0].text
    CTR_1 = CTR[0].text
    CPC_1 = CPC[0].text
    StoreUnitsSold_1 = StoreUnitsSold[0].text
    StoreRevenue_1 = StoreRevenue[0].text.replace('PHP', '')
    StoreROI_1 = StoreROI[0].text

    datas = []
    item = {}
    item['spend'] = spend_1
    item['Impressions'] = Impressions_1
    item['Clicks'] = Clicks_1
    item['CTR'] = CTR_1
    item['CPC'] = CPC_1
    item['StoreUnitsSold'] = StoreUnitsSold_1
    item['StoreRevenue'] = StoreRevenue_1
    item['StoreROI'] = StoreROI_1
    item['username'] = username
    # dic = item
    datas.append(item)
    print(datas)

    header = ['username', 'spend', 'Impressions', 'Clicks', 'CTR', 'CPC', 'StoreUnitsSold', 'StoreRevenue', 'StoreROI']
    with open('test0801.csv', 'a', newline='', encoding='utf-8') as f:
        writer = csv.DictWriter(f, fieldnames=header)  # 提前预览列名,当下面代码写入数据时,会将其一一对应。
        writer.writeheader()  # 写入列名
        writer.writerows(datas)  # 写入数据


def SG_promotion():
    try:
        driver.find_element_by_xpath(
            "//h4[contains(text(),'May 2022 - April 2023 LazGlobal International Day BAU Campaign')]").click()
        time.sleep(2)
    except NoSuchElementException:
        return

    x_exist()  # 判断第二个X键

    driver.find_element_by_xpath("//span[contains(text(),'Available Campaign')]").click()
    time.sleep(2)

    try:
        driver.find_element_by_xpath(
            "//h4[contains(text(),'2022 International Day | All Sellers | 18 May')]").click()
        time.sleep(5)
    except NoSuchElementException:
        return

    try:
        driver.find_element_by_xpath("//button[contains(text(),'Join Now')]").click()
        time.sleep(5)
    except NoSuchElementException:
        return

    for i in range(1, 4):
        flag = isElementExist("//button[contains(text(),'Submit by Excel')]")
        if flag:
            break
        else:
            alert()

    export_excel()  # 导出表格并调用宏处理 ,不能后台独立运行

    print('SG站已报名成功')


def TH_promotion(username):
    time.sleep(5)
    ##点击推广详情
    try:
        driver.find_element_by_xpath(
            "*//div/div[2]/div/div/div/div[6]/div/div[2]/section/div/div[2]/div[3]/div[2]/div[2]/table/tbody/tr/td[2]/div/div/div/div/div[1]/a").click()
        time.sleep(2)
    except NoSuchElementException:
        return

    # 点击时间轴
    try:
        driver.find_element_by_xpath(
            "//div[2]/span/input").click()
        time.sleep(5)
    except NoSuchElementException:
        return

    # 点击过去30天  7月1号 -7月 31号
    try:
        # 向上一个月
        driver.find_element_by_xpath(
            "//*[@id='product-ads']/div[4]/div/div/div/div/div[1]/div[1]/div[2]/div[1]/div/a[2]").click()
        time.sleep(2)
        driver.find_element_by_xpath(
            "//*[@id='product-ads']/div[4]/div/div/div/div/div[1]/div[1]/div[2]/div[2]/table/tbody/tr[1]/td[6]/div").click()
        time.sleep(2)
        driver.find_element_by_xpath(
            "//*[@id='product-ads']/div[4]/div/div/div/div/div[1]/div[1]/div[2]/div[2]/table/tbody/tr[6]/td[1]/div").click()
        time.sleep(2)
    except NoSuchElementException:
        return

    spend = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[1]/div[2]/div/span[2]")
    Impressions = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[2]/div[2]/div/span[2]")
    Clicks = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[3]/div[2]/div/span[2]")
    CTR = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[4]/div[2]/div/span[1]")
    CPC = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[5]/div[2]/div/span[2]")
    StoreUnitsSold = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[6]/div[2]/div/span[2]")
    StoreRevenue = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[7]/div[2]/div/span[2]")
    StoreROI = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[8]/div[2]/div/span[2]")

    spend_1 = spend[0].text.replace('THB', '')
    Impressions_1 = Impressions[0].text
    Clicks_1 = Clicks[0].text
    CTR_1 = CTR[0].text
    CPC_1 = CPC[0].text
    StoreUnitsSold_1 = StoreUnitsSold[0].text
    StoreRevenue_1 = StoreRevenue[0].text.replace('THB', '')
    StoreROI_1 = StoreROI[0].text

    datas = []
    item = {}
    item['spend'] = spend_1
    item['Impressions'] = Impressions_1
    item['Clicks'] = Clicks_1
    item['CTR'] = CTR_1
    item['CPC'] = CPC_1
    item['StoreUnitsSold'] = StoreUnitsSold_1
    item['StoreRevenue'] = StoreRevenue_1
    item['StoreROI'] = StoreROI_1
    item['username'] = username
    # dic = item
    datas.append(item)
    print(datas)

    header = ['username', 'spend', 'Impressions', 'Clicks', 'CTR', 'CPC', 'StoreUnitsSold', 'StoreRevenue', 'StoreROI']
    with open('test0801.csv', 'a', newline='', encoding='utf-8') as f:
        writer = csv.DictWriter(f, fieldnames=header)  # 提前预览列名,当下面代码写入数据时,会将其一一对应。
        writer.writeheader()  # 写入列名
        writer.writerows(datas)  # 写入数据


def VN_promotion(username):
    time.sleep(5)
    ##点击推广详情
    try:
        driver.find_element_by_xpath(
            "*//div/div[2]/div/div/div/div[6]/div/div[2]/section/div/div[2]/div[3]/div[2]/div[2]/table/tbody/tr/td[2]/div/div/div/div/div[1]/a").click()
        time.sleep(2)
    except NoSuchElementException:
        return

    # 点击时间轴
    try:
        driver.find_element_by_xpath(
            "//div[2]/span/input").click()
        time.sleep(5)
    except NoSuchElementException:
        return

    # 点击过去30天  7月1号 -7月 31号
    try:
        # 向上一个月
        driver.find_element_by_xpath(
            "//*[@id='product-ads']/div[4]/div/div/div/div/div[1]/div[1]/div[2]/div[1]/div/a[2]").click()
        time.sleep(2)
        driver.find_element_by_xpath(
            "//*[@id='product-ads']/div[4]/div/div/div/div/div[1]/div[1]/div[2]/div[2]/table/tbody/tr[1]/td[6]/div").click()
        time.sleep(2)
        driver.find_element_by_xpath(
            "//*[@id='product-ads']/div[4]/div/div/div/div/div[1]/div[1]/div[2]/div[2]/table/tbody/tr[6]/td[1]/div").click()
        time.sleep(2)
    except NoSuchElementException:
        return

    spend = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[1]/div[2]/div/span[2]")
    Impressions = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[2]/div[2]/div/span[2]")
    Clicks = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[3]/div[2]/div/span[2]")
    CTR = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[4]/div[2]/div/span[1]")
    CPC = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[5]/div[2]/div/span[2]")
    StoreUnitsSold = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[6]/div[2]/div/span[2]")
    StoreRevenue = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[7]/div[2]/div/span[2]")
    StoreROI = driver.find_elements_by_xpath(
        "//*[@id='product-ads']/div[2]/div[2]/div[3]/div/div[2]/div[8]/div[2]/div/span[2]")

    spend_1 = spend[0].text.replace('VND', '')
    Impressions_1 = Impressions[0].text
    Clicks_1 = Clicks[0].text
    CTR_1 = CTR[0].text
    CPC_1 = CPC[0].text
    StoreUnitsSold_1 = StoreUnitsSold[0].text
    StoreRevenue_1 = StoreRevenue[0].text.replace('VND', '')
    StoreROI_1 = StoreROI[0].text

    datas = []
    item = {}
    item['spend'] = spend_1
    item['Impressions'] = Impressions_1
    item['Clicks'] = Clicks_1
    item['CTR'] = CTR_1
    item['CPC'] = CPC_1
    item['StoreUnitsSold'] = StoreUnitsSold_1
    item['StoreRevenue'] = StoreRevenue_1
    item['StoreROI'] = StoreROI_1
    item['username'] = username
    # dic = item
    datas.append(item)
    print(datas)

    header = ['username', 'spend', 'Impressions', 'Clicks', 'CTR', 'CPC', 'StoreUnitsSold', 'StoreRevenue', 'StoreROI']
    with open('test0801.csv', 'a', newline='', encoding='utf-8') as f:
        writer = csv.DictWriter(f, fieldnames=header)  # 提前预览列名,当下面代码写入数据时,会将其一一对应。
        writer.writeheader()  # 写入列名
        writer.writerows(datas)  # 写入数据


# 登入页面
def login_pass(username, password):
    driver.get(url=login_url)
    # time.sleep属于强制等待,模拟人的等待行为
    time.sleep(3)

    count = 3
    while count:
        # 登入
        flag = id_exist("fm-login-id")
        if flag:
            try_login(username, password)
        # print('第%s次尝试' % i)
        # i = i + 1
        # 判断语句
        else:
            count -= 1
            i = 3 - count
            print('%s 登入失败' % username)
            print('第%s尝试失败,总计3次' % i)
            continue

    time.sleep(3)
    flag = isElementExist("//*[contains(text(),'Promotions')]")
    for i in range(1, 3):
        if flag:
            print('%s 登入成功' % username)
            # 找到活动页
            try_promotions()
            break
        else:
            print("等待活动页")
        # 切换到活动页
    time.sleep(5)
    # driver.close()
    for handle in driver.window_handles:
        # 先切换到该窗口
        driver.switch_to.window(handle)
        # 得到该窗口的标题栏字符串,判断是不是我们要操作的那个窗口
        if 'Seller Center' in driver.title:
            # 如果是,那么这时候WebDriver对象就是对应的该该窗口,正好,跳出循环,
            break
        # print(driver.title)
        # page=driver.page_source
        # print(page)
        # dig_alert = driver.switch_to_alert()
        # print(dig_alert.text)
        # alert.dismiss()
        # div类型弹窗
        ##################################################

    ############### 每次活动都不一样?###########
    # 下滑一次
    # driver.execute_script("window.scrollBy(0,300)")
    # time.sleep(3)
    # special invitation

    ### MY 推广 ###
    for j in range(1, 3):
        x_exist()  # 判断是否有其他窗口

    '''
    time.sleep(2)
    driver.execute_script("window.scrollBy(0,800)")
    time.sleep(2)

    flag = isElementExist("//table/tbody/tr/td[2]/div/div/div/div/div[1]/a")
    if flag:
        MY_promotion(username)
    else:
        print('%s MY站无推广计划' % username)

    
    ###切换站点处理/ Philippine ######

    try:
        driver.find_element_by_xpath("//span[contains(text(),'Philippine')]").click()
        time.sleep(2)
    except NoSuchElementException:
        return
    ##########################

    for j in range(1, 3):
        x_exist()  # 判断是否有其他窗口

    try:
        # Management
        driver.find_element_by_xpath("//*[@id='product-ads']/div[2]/div/div/div[1]/div/div[2]/div[1]/div[2]/div[3]/span/button/span").click()
        time.sleep(2)
    except NoSuchElementException:
        print('无推广计划')
        return

    time.sleep(2)
    driver.execute_script("window.scrollBy(0,800)")
    time.sleep(2)

    flag = isElementExist("//table/tbody/tr/td[2]/div/div/div/div/div[1]/a")
    if flag:
        PH_promotion(username)
    else:
        print('%s PH站无活动页面')

    
    ###切换站点处理/ Singapore ######
    driver.find_element_by_xpath("//span[contains(text(),'Singapore')]").click()
    time.sleep(2)
    ##########################
    for j in range(1, 3):
        x_exist()  # 判断第一个X键

    flag = isElementExist("//h4[contains(text(),'May 2022 - April 2023 LazGlobal International Day BAU Campaign')]")
    if flag:
        SG_promotion()
    else:
        print('%s SG站无活动页面')
        
    
    ###切换站点处理/ Thailand ######
    driver.find_element_by_xpath("//span[contains(text(),'Thailand')]").click()
    time.sleep(2)
    ##########################

    for j in range(1, 3):
        x_exist()  # 判断是否有其他窗口

    try:
        # Management
        driver.find_element_by_xpath("//*[@id='product-ads']/div[2]/div/div/div[1]/div/div[2]/div[1]/div[2]/div[3]/span/button/span").click()
        time.sleep(2)
    except NoSuchElementException:
        print('无推广计划')
        return

    time.sleep(2)
    driver.execute_script("window.scrollBy(0,1200)")
    time.sleep(2)

    flag = isElementExist("//table/tbody/tr/td[2]/div/div/div/div/div[1]/a")
    if flag:
        TH_promotion(username)
    else:
        print('%s TH站无活动页面')

    '''
    ###切换站点处理/ Vietnam ######
    try:
        driver.find_element_by_xpath("//span[contains(text(),'Vietnam')]").click()
        time.sleep(2)
    except NoSuchElementException:
        return
    ##########################
    for j in range(1, 3):
        x_exist()  # 判断是否有其他窗口

    try:
        # Management
        driver.find_element_by_xpath("//*[@id='product-ads']/div[2]/div/div/div[1]/div/div[2]/div[1]/div[2]/div[3]/span/button/span").click()
        time.sleep(2)
    except NoSuchElementException:
        print('无推广计划')
        return

    time.sleep(2)
    driver.execute_script("window.scrollBy(0,1200)")
    time.sleep(2)

    flag = isElementExist("//table/tbody/tr/td[2]/div/div/div/div/div[1]/a")
    if flag:
        VN_promotion(username)
    else:
        print('%s VN站无活动页面')



# 分站点 读取文件,写入文件,提交报名部分

def login(url):
    # 循环账号
    work_book = xlrd.open_workbook('usename.xls')
    sheet_1 = work_book.sheet_by_index(0)
    for i in range(1, 90):
        global usename
        try:
            username = sheet_1.cell_value(i, 0)
        except IndexError:
            print('list index out of range')
            return
        password = sheet_1.cell_value(i, 1)
        # print(username)
        # print(password)
        # 第一次登入
        login_pass(username, password)
        time.sleep(3)
        driver.get(url=login_url)
        time.sleep(20)

    driver.quit()


def main():
    login(login_url)
    # login()


if __name__ == '__main__':
    main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值