Pārlūkot izejas kodu

MOD:投放计划初版

cxyu 3 gadi atpakaļ
vecāks
revīzija
3537420ca0
2 mainītis faili ar 152 papildinājumiem un 95 dzēšanām
  1. 12 6
      wechat_action/send_ad.py
  2. 140 89
      wechat_action/send_ad_idea.py

+ 12 - 6
wechat_action/send_ad.py

@@ -40,7 +40,7 @@ class SendAd():
         wechat_gg = self.driver.find_element_by_css_selector('#PRODUCTTYPE_WECHAT')
         wechat_gg.click()
         localtion = self.task['localtion']
-        if localtion == 'gzh_bottom':
+        if localtion == 'gzh_botoom':
             # 默认是这个选项,所以不用进行点选
             pass
         if localtion == 'gzh_movie':
@@ -80,26 +80,32 @@ class SendAd():
             self.driver.find_element_by_class_name('icon-3cAquX1RLZ').click()
             self.driver.find_element_by_xpath('//*[@id="bid_objective_6"]/span[1]').click()
         if self.task['localtion'] == 'pyq':
-            pass
+            citys = self.driver.find_elements_by_class_name('checkbox-1pfRMRqv-R')
+            for _ in citys:
+                _.click()
+
         day_cost = self.driver.find_element_by_css_selector('#budget_input')
+        #TODO: 投放时间,投放位置,投放价格还没有进行设置
+        WebDriverWait(self.driver, 10).until(lambda  x:(day_cost.is_displayed() and day_cost.is_enabled()))
+
         day_cost.send_keys('100')
         self.driver.find_element_by_css_selector('#target_next_step').click()
 
     def set_ad_human(self):
         #TODO:设置人群
+        #TODO:检查人群是否正常
         pass
 
     def set_ad_idea(self):
-        # TODO:创意创建这部分切割开
         # 创意创建
-        if self.task['localtion'] == 'gzh_bottom':
-            self.ad_idea_action.idea_pic_gzh_bottom()
+        if self.task['localtion'] == 'gzh_botoom':
+            self.ad_idea_action.idea_gzh_bottom()
         if self.task['localtion'] == 'gzh_movie':
             self.ad_idea_action.idea_movie_gzh_movie()
         if self.task['localtion'] == 'gzh_big_pic':
             self.ad_idea_action.idea_big_pic()
         if self.task['localtion'] == 'pyq':
-            pass
+            self.ad_idea_action.idea_pyq()
 
 
         next_button = self.driver.find_element_by_class_name('adui-button-primary')

+ 140 - 89
wechat_action/send_ad_idea.py

@@ -9,71 +9,164 @@ class IdeaAction:
         self.driver = driver
         self.task = task
 
-    def push_page(self):
-        self.driver.find_element_by_class_name('adui-button-small').click()
-        select_input = self.driver.find_element_by_class_name('adui-input-base')
-        select_input.send_keys('原生')
-        self.driver.find_element_by_id('select_canvas_ok_btn').click()
+    def send_page(self):
+        WebDriverWait(self.driver, 10).until(
+            lambda driver: self.driver.find_element_by_class_name('webuploader-element-invisible'))
+        page_input = self.driver.find_element_by_class_name('webuploader-element-invisible')
+        page_input.send_keys(self.task['idea']['page_path'])
+        try:
+            WebDriverWait(self.driver, 100).until(lambda driver: driver.find_element_by_xpath(
+                '//*[@id="wxadcontainer"]/div[1]/div/div[2]/main/div/div[2]/div[2]/div/div[1]/div[1]/div[2]/div/form/div[2]/div/div[1]/div/div[1]/div/div/div/div/div/div[2]/section/div/div[2]/button[1]'))
+            self.driver.find_element_by_xpath(
+                '//*[@id="wxadcontainer"]/div[1]/div/div[2]/main/div/div[2]/div[2]/div/div[1]/div[1]/div[2]/div/form/div[2]/div/div[1]/div/div[1]/div/div/div/div/div/div[2]/section/div/div[2]/button[1]').click()
+            WebDriverWait(self.driver, 100).until(
+                lambda driver: self.driver.find_element_by_xpath('//*[@id="test_progress_confirm"]'))
+
+            suc_button = self.driver.find_element_by_xpath('//*[@id="test_progress_confirm"]')
+            WebDriverWait(self.driver, 100).until(lambda driver: suc_button.is_displayed() and suc_button.is_enabled())
+            suc_button.click()
+        except:
+            pass
+
+    def push_promotion_page(self):
+        idea_dic = self.task['idea']
+        select_elements = self.driver.find_elements_by_xpath('//*[@class="label-2ZOAbuO31o"]')
+        # 点击跳转
+        for _ in select_elements:
+            if _.text == '公众号详情页' and idea_dic['jump_type'] == 2:
+                _.click()
+        time.sleep(random.uniform(0.1, 0.2))
+
+        # 按钮文案
+        for _ in select_elements:
+            if _.text == '立即咨询' and idea_dic['button_type'] == 2:
+                _.click()
+            if _.text == '立即申请' and idea_dic['button_type'] == 3:
+                _.click()
+            if _.text == '阅读小说' and idea_dic['button_type'] == 4:
+                _.click()
+        time.sleep(random.uniform(0.1, 0.2))
+
+        if idea_dic['jump_type'] == 1:
+            # 点击按钮跳转
+            for _ in select_elements:
+                if _.text == '一键关注' and idea_dic['jump_type-button_type'] == 2:
+                    _.click()
+            time.sleep(random.uniform(0.1, 0.2))
+
+            # 原生推广页选择
+            self.driver.find_element_by_xpath('//*[@id="choose_template"]').click()
+            select_elements = self.driver.find_elements_by_xpath('//*[@class="inputWrapper-3fBModc9zM"]')
+            for _ in select_elements:
+                if _.get_attribute("placeholder") == '输入关键字搜索推广页':
+                    _.send_keys(idea_dic['jump_type-page_type'])
+                    _.send_keys(Keys.RETURN)
+            WebDriverWait(self.driver, 30).until(
+                lambda driver: self.driver.find_elements_by_xpath('//*[@class="adui-table-cellInner"]'))
+
+            page_elements = self.driver.find_elements_by_xpath('//*[@class="adui-table-cellInner"]')
+            for _ in page_elements:
+                # 推广页的名字需要一模一样
+                if _.text == idea_dic['jump_type-page_type']:
+                    _.click()
+            time.sleep(random.uniform(0.1, 0.2))
+
+            self.driver.find_element_by_xpath('//*[@id="select_canvas_ok_btn"]/span').click()
+            '//*[@id="test_creative_next_step"]'
+            time.sleep(random.uniform(0.1, 0.2))
+
+    def idea_pic_gzh_botoom(self):
+        # 上传图片
+        self.send_page()
         time.sleep(random.uniform(1, 2))
 
-    def idea_banner_gzh_bottom(self):
+        # 信息栏类型
+        idea_dic = self.task['idea']
+        select_elements = self.driver.find_elements_by_xpath('//*[@class="label-2ZOAbuO31o"]')
+        input_elements = self.driver.find_elements_by_xpath('//*[@class="input-3MbKvywHL2"]')
+        # 信息栏
+        if idea_dic['info_type'] == 1:
+            # 头像
+            for _ in select_elements:
+                if _.text == '头像昵称型':
+                    _.click()
+        if idea_dic['info_type'] == 2:
+            # 文案
+            for _ in select_elements:
+                if _.text == '文案型':
+                    _.click()
+            for _ in input_elements:
+                # 信息栏文案
+                if _.get_attribute("placeholder") == '信息栏文案':
+                    _.send_keys(idea_dic['info_type-content'])
+        time.sleep(random.uniform(0.1, 0.2))
+        self.push_promotion_page()
+
+    def idea_banner_pic_gzh_botoom(self):
+        WebDriverWait(self.driver, 10).until(
+            lambda driver: self.driver.find_element_by_class_name('webuploader-element-invisible'))
+        select_elements = self.driver.find_elements_by_xpath('//*[@class="label-2ZOAbuO31o"]')
+        # 创意样式
+        for _ in select_elements:
+            if _.text == '图片式卡片':
+                _.click()
+                break
+
+        # 上传图片
+        self.send_page()
+        time.sleep(random.uniform(0.5, 0.7))
+
+        # 标签设置
+        select_elements = self.driver.find_elements_by_xpath('//*[@class="label-2ZOAbuO31o"]')
+        for _ in select_elements:
+            if _.text == '转换目标量标签' and self.task['idea']['lable_type'] == 2:
+                _.click()
+        # 素材设置
+        time.sleep(random.uniform(0.1, 0.2))
+        self.push_promotion_page()
+
+    def idea_banner_business_gzh_bottom(self):
+        WebDriverWait(self.driver, 10).until(
+            lambda driver: self.driver.find_element_by_xpath('//*[@id="test_material_type_135"]/span[2]'))
         self.driver.find_element_by_css_selector('#test_material_type_135 > span.inputWrapper-3fBModc9zM > i').click()
         wen_input = self.driver.find_element_by_class_name('input-3MbKvywHL2')
-        wen_input.send_keys('nihaonihao')
-
-    def idea_pic_gzh_bottom(self):
-        # TODO:添加try,catch因为图片上传可能慢
-        WebDriverWait(self.driver, 10).until(lambda driver: driver.find_element_by_class_name('adui-button-small'))
-
-        self.driver.find_element_by_class_name("webuploader-element-invisible").send_keys(
-            "/usr/share/wallpapers/deepin/Beach_by_Samuel_Scrimshaw.jpg")
-        WebDriverWait(self.driver, 5).until(lambda driver: driver.find_element_by_class_name('btnFist-uueBS6DQFa'))
-        self.driver.find_element_by_class_name('btnFist-uueBS6DQFa').click()
-        WebDriverWait(self.driver, 10).until(lambda driver: driver.find_element_by_id('test_progress_confirm'))
-        # 等待上传完毕,因为完成按钮本身可以
-        time.sleep(10)
-        self.driver.find_element_by_id('test_progress_confirm').click()
-        time.sleep(random.uniform(1, 2))
-
-        self.driver.save_screenshot('set_page_pic.png')
-        self.push_page()
-        self.driver.save_screenshot('set_page_idea.png')
+        wen_input.send_keys(self.task['idea']['idea_content'])
+        time.sleep(random.uniform(0.2, 0.5))
+        self.push_promotion_page()
+
+    def idea_gzh_bottom(self):
+        if self.task['idea']['idea_type'] == 1:
+            self.idea_pic_gzh_botoom()
+        if self.task['idea']['idea_type'] == 2:
+            self.idea_banner_pic_gzh_botoom()
+        if self.task['idea']['idea_type'] == 3:
+            self.idea_banner_business_gzh_bottom()
 
     def idea_movie_gzh_movie(self):
         WebDriverWait(self.driver, 10).until(
             lambda driver: driver.find_element_by_class_name('webuploader-element-invisible'))
 
         self.driver.find_element_by_class_name('webuploader-element-invisible').send_keys(
-            '/home/cxyu/Downloads/上门龙婿-竖3(1).mp4')
+            self.task['idea']['movie_path'])
         suc_button = self.driver.find_element_by_id('test_progress_confirm')
         WebDriverWait(self.driver, 1000).until(lambda x: (suc_button.is_displayed() and suc_button.is_enabled()))
 
         self.driver.find_element_by_id('test_progress_confirm').click()
+        time.sleep(random.uniform(0.4, 0.6))
+        self.push_promotion_page()
+        time.sleep(random.uniform(0.4, 0.6))
 
-        self.driver.save_screenshot('set_page_pic.png')
-        self.push_page()
         text_input = self.driver.find_element_by_css_selector('#reward_video_desc > div > input')
-        text_input.send_keys('asdf')
+        text_input.send_keys(self.task['idea']['content'])
+
+        select_elements = self.driver.find_elements_by_xpath('//*[@class="label-2ZOAbuO31o"]')
+        for _ in select_elements:
+            if _.text == '转化目标量标签' and self.task['idea']['lable_type'] == 2:
+                _.click()
 
     def idea_big_pic(self):
         # 设置图片
-        WebDriverWait(self.driver, 10).until(
-            lambda driver: self.driver.find_element_by_class_name('webuploader-element-invisible'))
-        page_input = self.driver.find_element_by_class_name('webuploader-element-invisible')
-        page_input.send_keys('/usr/share/wallpapers/deepin/Beach_by_Samuel_Scrimshaw.jpg')
-        try:
-            WebDriverWait(self.driver, 100).until(lambda driver: driver.find_element_by_xpath(
-                '//*[@id="wxadcontainer"]/div[1]/div/div[2]/main/div/div[2]/div[2]/div/div[1]/div[1]/div[2]/div/form/div[2]/div/div[1]/div/div[1]/div/div/div/div/div/div[2]/section/div/div[2]/button[1]'))
-            self.driver.find_element_by_xpath(
-                '//*[@id="wxadcontainer"]/div[1]/div/div[2]/main/div/div[2]/div[2]/div/div[1]/div[1]/div[2]/div/form/div[2]/div/div[1]/div/div[1]/div/div/div/div/div/div[2]/section/div/div[2]/button[1]').click()
-            WebDriverWait(self.driver, 100).until(
-                lambda driver: self.driver.find_element_by_xpath('//*[@id="test_progress_confirm"]'))
-
-            suc_button = self.driver.find_element_by_xpath('//*[@id="test_progress_confirm"]')
-            WebDriverWait(self.driver, 100).until(lambda driver: suc_button.is_displayed() and suc_button.is_enabled())
-            suc_button.click()
-        except:
-            pass
+        self.send_page()
         idea_dic = self.task['idea']
         select_elements = self.driver.find_elements_by_xpath('//*[@class="label-2ZOAbuO31o"]')
         input_elements = self.driver.find_elements_by_xpath('//*[@class="input-3MbKvywHL2"]')
@@ -95,7 +188,6 @@ class IdeaAction:
         time.sleep(random.uniform(0.1, 0.2))
 
         # 图文标题
-        '//*[@id="test_first_line_input"]/div/input'
         self.driver.find_element_by_xpath('//*[@id="test_first_line_input"]/div/input').send_keys(idea_dic['title'])
         time.sleep(random.uniform(0.1, 0.2))
 
@@ -123,48 +215,7 @@ class IdeaAction:
                 _.click()
         time.sleep(random.uniform(0.1, 0.2))
 
-        # 点击跳转
-        for _ in select_elements:
-            if _.text == '公众号详情页' and idea_dic['jump_type'] == 2:
-                _.click()
-        time.sleep(random.uniform(0.1, 0.2))
-
-        # 按钮文案
-        for _ in select_elements:
-            if _.text == '立即咨询' and idea_dic['button_type'] == 2:
-                _.click()
-            if _.text == '立即申请' and idea_dic['button_type'] == 3:
-                _.click()
-            if _.text == '阅读小说' and idea_dic['button_type'] == 4:
-                _.click()
-        time.sleep(random.uniform(0.1, 0.2))
-
-        if idea_dic['jump_type'] == 1:
-            # 点击按钮跳转
-            for _ in select_elements:
-                if _.text == '一键关注' and idea_dic['jump_type-button_type'] == 2:
-                    _.click()
-            time.sleep(random.uniform(0.1, 0.2))
-
-            # 原生推广页选择
-            self.driver.find_element_by_xpath('//*[@id="choose_template"]').click()
-            select_elements = self.driver.find_elements_by_xpath('//*[@class="inputWrapper-3fBModc9zM"]')
-            for _ in select_elements:
-                if _.get_attribute("placeholder") == '输入关键字搜索推广页':
-                    _.send_keys(idea_dic['jump_type-page_type'])
-                    _.send_keys(Keys.RETURN)
-            WebDriverWait(self.driver, 30).until(
-                lambda driver: self.driver.find_elements_by_xpath('//*[@class="adui-table-cellInner"]'))
-
-            page_elements = self.driver.find_elements_by_xpath('//*[@class="adui-table-cellInner"]')
-            for _ in page_elements:
-                if _.text == idea_dic['jump_type-page_type']:
-                    _.click()
-            time.sleep(random.uniform(0.1, 0.2))
-
-            self.driver.find_element_by_xpath('//*[@id="select_canvas_ok_btn"]/span').click()
-            '//*[@id="test_creative_next_step"]'
-            time.sleep(random.uniform(0.1, 0.2))
+        self.push_promotion_page()
 
     def idea_pyq(self):
         pass