Sfoglia il codice sorgente

MOD:添加微信优雅大图选项

cxyu 4 anni fa
parent
commit
2021465823
3 ha cambiato i file con 138 aggiunte e 15 eliminazioni
  1. 1 1
      wechat_action/create_ad.py
  2. 19 12
      wechat_action/send_ad.py
  3. 118 2
      wechat_action/send_ad_idea.py

+ 1 - 1
wechat_action/create_ad.py

@@ -735,7 +735,7 @@ class CreateAd:
 
             return {'sucess': True, 'result_info': advertisement_sign}
         except Exception as e:
-
+            #TODO:有空时讲 e 内容设置为原始内容
             if err_num > 3:
                 layout_num = int(time.time() * 1000)
                 now_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

+ 19 - 12
wechat_action/send_ad.py

@@ -15,11 +15,12 @@ import random
 class SendAd():
     # TODO:一旦登录之后,driver就不要关闭,然后错误就部分不断重试
 
-    def __init__(self, task):
+
+    def __init__(self, task,login_ad):
         self.task = task
-        self.task_check()
-        self.driver = LogIn().get_driver_loged()
-        self.ad_idea_action = IdeaAction(self.driver)
+        # self.task_check()
+        self.driver = login_ad.get_driver_loged()
+        self.ad_idea_action = IdeaAction(self.driver,task)
         self.ad_human_action = HumanAd(self.driver)
 
 
@@ -49,17 +50,19 @@ class SendAd():
             wechat_localtion = self.driver.find_element_by_css_selector(
                 '#wxadcontainer > div:nth-child(1) > div > div.content-2-HFBij0Uh > main > div > div:nth-child(3) > div.adui-grid-row > div:nth-child(1)')
             wechat_localtion.click()
+        if localtion== 'gzh_big_pic':
+            self.driver.find_element_by_xpath('//*[@id="wxadcontainer"]/div[1]/div/div[2]/main/div/div[3]/div[3]/div[1]/div/button').click()
+            time.sleep(0.5)
+            self.driver.find_element_by_xpath('//*[@id="wxadcontainer"]/div[1]/div/div[2]/main/div/div[3]/div[3]/div[3]/ol/li[2]').click()
         time.sleep(random.uniform(0.1, 0.3))
 
         # 花销设置
         # cost_input = self.driver.find_element_by_css_selector(
         #     '#wxadcontainer > div:nth-child(1) > div > div.content-2-HFBij0Uh > main > div > div:nth-child(5) > div:nth-child(2) > div:nth-child(1) > div > input')
         # cost_input.send_keys('100')
-
         # 进入下一页
         next_button = self.driver.find_element_by_css_selector('#plan_next_step')
         next_button.click()
-        self.driver.save_screenshot('set_page_localtion.png')
 
     def set_ad_cost(self):
         # 投放计划创建
@@ -73,11 +76,13 @@ class SendAd():
             citys = self.driver.find_elements_by_class_name('checkbox-1pfRMRqv-R')
             for _ in citys:
                 _.click()
+        if self.task['localtion']=='gzh_big_pic':
+            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
         day_cost = self.driver.find_element_by_css_selector('#budget_input')
         day_cost.send_keys('100')
-        self.driver.save_screenshot('set_page_cost.png')
         self.driver.find_element_by_css_selector('#target_next_step').click()
 
     def set_ad_human(self):
@@ -91,10 +96,15 @@ class SendAd():
             self.ad_idea_action.idea_pic_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
 
+
         next_button = self.driver.find_element_by_class_name('adui-button-primary')
+        WebDriverWait(self.driver, 1000).until(lambda  x:(next_button.is_displayed() and next_button.is_enabled()))
+
         next_button.click()
 
     def push_ad(self):
@@ -102,16 +112,16 @@ class SendAd():
         time.sleep(random.uniform(3, 4))
         self.driver.find_element_by_class_name('icon-3cAquX1RLZ').click()
         time.sleep(random.uniform(0.5, 1))
-        self.driver.save_screenshot('push_page.png')
         self.driver.find_element_by_class_name('adui-button-primary').click()
 
     def task_check(self):
         # TODO:检查任务有无输入问题,
+        #   需要重点确认输入金额,时间是否正确.从最后页面内容进行再次确认
         if 'master' not in self.task.keys() or 'localtion' not in self.task.keys():
             exit()
 
     def run(self):
-        # TODO:出错就截图,然后保存
+        # TODO:出错就截图,然后保存-----在最后一步截图,进行保存
         self.ad_human_action.check_human_info()
         self.select_ad_locations()
         self.set_ad_cost()
@@ -119,6 +129,3 @@ class SendAd():
         self.push_ad()
 
 
-if __name__ == '__main__':
-    task = {'master': '', 'localtion': 'gzh_movie'}
-    SendAd(task).run()

+ 118 - 2
wechat_action/send_ad_idea.py

@@ -1,11 +1,13 @@
 import time
 import random
+from selenium.webdriver.common.keys import Keys
 from selenium.webdriver.support.wait import WebDriverWait
 
 
 class IdeaAction:
-    def __init__(self, driver):
+    def __init__(self, driver, task):
         self.driver = driver
+        self.task = task
 
     def push_page(self):
         self.driver.find_element_by_class_name('adui-button-small').click()
@@ -44,7 +46,7 @@ class IdeaAction:
         self.driver.find_element_by_class_name('webuploader-element-invisible').send_keys(
             '/home/cxyu/Downloads/上门龙婿-竖3(1).mp4')
         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()))
+        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()
 
@@ -52,3 +54,117 @@ class IdeaAction:
         self.push_page()
         text_input = self.driver.find_element_by_css_selector('#reward_video_desc > div > input')
         text_input.send_keys('asdf')
+
+    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
+        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))
+
+        # 图文标题
+        '//*[@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))
+
+        # 广告文案
+        for _ in input_elements:
+            if _.get_attribute("placeholder") == '请输入首行文案':
+                _.send_keys(idea_dic['content_one'])
+                time.sleep(random.uniform(0.1, 0.2))
+
+            if _.get_attribute("placeholder") == '请输入次行文案':
+                _.send_keys(idea_dic['content_two'])
+                time.sleep(random.uniform(0.1, 0.2))
+
+            if _.get_attribute("placeholder") == '请输入第三行文案(选填)':
+                _.send_keys(idea_dic['content_three'])
+                time.sleep(random.uniform(0.1, 0.2))
+
+        # 标签展示
+        for _ in select_elements:
+            if _.text == '不启用' and idea_dic['lable_type'] == 1:
+                _.click()
+            if _.text == '好友关注量标签' and idea_dic['lable_type'] == 2:
+                _.click()
+            if _.text == '转化目标量标签' and idea_dic['lable_type'] == 3:
+                _.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))
+
+    def idea_pyq(self):
+        pass