Explorar o código

MOD:对应后台修改格式

cxyu %!s(int64=3) %!d(string=hai) anos
pai
achega
fb5b68765f
Modificáronse 2 ficheiros con 69 adicións e 18 borrados
  1. 60 17
      wechat_action/create_ad_plan.py
  2. 9 1
      wechat_action/create_ad_plan_idea.py

+ 60 - 17
wechat_action/create_ad_plan.py

@@ -32,7 +32,7 @@ class CreateAdPlan():
             title_.send_keys(Keys.BACKSPACE)
         title_.click()
         time.sleep(0.1)
-        title_.send_keys(self.task['title'])
+        title_.send_keys(self.task['title'].replace(' ', '')[:29])
         title_.send_keys(Keys.RETURN)
         time.sleep(random.uniform(0.1, 0.2))
 
@@ -65,10 +65,17 @@ class CreateAdPlan():
                         ''')
         WebDriverWait(self.driver, 10).until(
             lambda driver: self.driver.find_element_by_css_selector('#PRODUCTTYPE_WECHAT'))
+        # 设置公众号名字
+        for i in range(30):
+            self.driver.find_element_by_xpath('//*[@id="test_plan_name"]/input').send_keys(Keys.BACKSPACE)
+
+        self.driver.find_element_by_xpath('//*[@id="test_plan_name"]/input').send_keys(
+            self.task['title'].replace(' ', '')[:29])
+
         # 推广公众号
         wechat_gg = self.driver.find_element_by_css_selector('#PRODUCTTYPE_WECHAT')
         wechat_gg.click()
-        localtion = self.task['localtion']
+        localtion = self.task['plan_base'][1]
         if localtion == 'gzh_botoom':
             # 默认是这个选项,所以不用进行点选
             pass
@@ -134,30 +141,42 @@ class CreateAdPlan():
         time.sleep(0.1)
 
     def set_ad_human_location(self):
+        # TODO:对常驻地,出差旅行,进行区分
         logging.info('设置对应人群信息-非人群包')
         WebDriverWait(self.driver, 10).until(
             lambda driver: self.driver.find_element_by_css_selector('#area_input > div > i'))
         self.driver.find_element_by_css_selector('#area_input > div > i').click()
-        if self.task['localtion'] == 'gzh_botoom':
+        if self.task['plan_base'][1] == 'gzh_botoom':
             self.driver.find_element_by_class_name('icon-3cAquX1RLZ').click()
-        if self.task['localtion'] == 'gzh_movie':
+        if self.task['plan_base'][1] == 'gzh_movie':
             citys = self.driver.find_elements_by_class_name('checkbox-1pfRMRqv-R')
             for _ in citys:
                 _.click()
-        if self.task['localtion'] == 'gzh_big_pic':
+        if self.task['plan_base'][1] == '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':
-            self.driver.find_element_by_class_name('icon-3cAquX1RLZ').click()
+        if self.task['plan_base'][1] == 'pyq':
+            # self.driver.find_element_by_class_name('icon-3cAquX1RLZ').click()
+            citys = self.driver.find_elements_by_class_name('checkbox-1pfRMRqv-R')
+            for _ in citys:
+                _.click()
 
     def set_ad_cost(self):
         # 投放计划创建
         # 广告创建
+        # TODO:出价还没有进行对应设置
         logging.info('设置对应广告花销')
         day_cost = self.driver.find_element_by_css_selector('#budget_input')
         WebDriverWait(self.driver, 10).until(lambda x: (day_cost.is_displayed() and day_cost.is_enabled()))
 
-        day_cost.send_keys('101')
+        day_cost.send_keys(self.task['cost']['day_cost'])
+        time.sleep(random.uniform(0.2, 0.3))
+
+        bid_cost = self.driver.find_element_by_xpath('//*[@id="price_input"]')
+        for i in range(10):
+            bid_cost.send_keys(Keys.BACKSPACE)
+        time.sleep(random.uniform(0.2, 0.3))
+        bid_cost.send_keys(self.task['cost']['bid'])
         time.sleep(5)
         self.driver.find_element_by_css_selector('#target_next_step').click()
         self.driver.save_screenshot('click{}.png'.format(time.time()))
@@ -206,38 +225,58 @@ class CreateAdPlan():
         self.driver.find_element_by_xpath(
             '//*[@class="adui-button-base adui-button-primary adui-button-small"]').click()
 
+    def set_ad_humam_gender(self):
+        logging.info('设置性别')
+        if self.task['human_info_parameter']['gender'] == 0:
+            self.driver.find_element_by_xpath('//*[@id="gender_"]/span[2]').click()
+        if self.task['human_info_parameter']['gender'] == 1:
+            self.driver.find_element_by_xpath('//*[@id="gender_MALE"]/span[2]').click()
+        if self.task['human_info_parameter']['gender'] == 2:
+            self.driver.find_element_by_xpath('//*[@id="gender_FEMALE"]/span[2]').click()
+
     def set_ad_age(self):
+        logging.info('设置年龄')
         age_elements = self.driver.find_elements_by_xpath('//*[@class="adui-select-selector"]')
         age_elements[0].click()
         time.sleep(0.1)
+        age_list = self.task['human_info_parameter']['age_list']
+        # TODO:66就是65以上
+
         # 256,一截,[14(17),24][25,32][33,40][41,48][49,56][57,64]
-        if self.task['age'][0] == 14:
+        if age_list[0] == 14:
             age_elements[1].click()
+            time.sleep(random.uniform(0.1, 0.2))
+            self.driver.execute_script('''
+                            document.getElementsByClassName('rc-virtual-list-holder')[0].scrollTop={};
+                            '''.format(((age_list[1] - 17) / 7) * 256))
+            self.driver.find_element_by_xpath('//*[@id="end_age_{}"]'.format(int(age_list[1]))).click()
 
         else:
             self.driver.execute_script('''
             document.getElementsByClassName('rc-virtual-list-holder')[0].scrollTop={};
-            '''.format(self.task['age'][0] - 17 / 7) * 256)
+            '''.format(((age_list[0] - 17) / 7) * 256))
             time.sleep(random.uniform(0.1, 0.2))
-            self.driver.find_element_by_xpath('//*[@id="begin_age_{}"]'.format(int(self.task['age'][0]))).click()
+            self.driver.find_element_by_xpath('//*[@id="begin_age_{}"]'.format(int(age_list[0]))).click()
 
             # 年龄---设置
             age_elements[1].click()
-
+            time.sleep(random.uniform(0.1, 0.2))
             self.driver.execute_script('''
                 document.getElementsByClassName('rc-virtual-list-holder')[0].scrollTop={};
-                '''.format(self.task['age'][0] - 17 / 7) * 256)
+                '''.format(((age_list[1] - 17) / 7) * 256))
+            time.sleep(random.uniform(0.1, 0.2))
+            self.driver.find_element_by_xpath('//*[@id="end_age_{}"]'.format(int(age_list[1]))).click()
 
     def set_ad_idea(self):
         # 创意创建
         logging.info('设置创意')
-        if self.task['localtion'] == 'gzh_botoom':
+        if self.task['plan_base'][1] == 'gzh_botoom':
             self.ad_idea_action.idea_gzh_bottom()
-        if self.task['localtion'] == 'gzh_movie':
+        if self.task['plan_base'][1] == 'gzh_movie':
             self.ad_idea_action.idea_movie_gzh_movie()
-        if self.task['localtion'] == 'gzh_big_pic':
+        if self.task['plan_base'][1] == 'gzh_big_pic':
             self.ad_idea_action.idea_big_pic()
-        if self.task['localtion'] == 'pyq':
+        if self.task['plan_base'][1] == 'pyq':
             self.ad_idea_action.idea_pyq()
 
         next_button = self.driver.find_element_by_class_name('adui-button-primary')
@@ -302,10 +341,14 @@ class CreateAdPlan():
             # self.ad_human_action.check_human_info()
             self.set_ad_locations()
             self.set_ad_time()
+
             self.set_ad_title()
             self.set_ad_cpm()
             self.set_ad_human_location()
             self.set_ad_human()
+            self.set_ad_humam_gender()
+            self.set_ad_age()
+
             self.set_ad_cost()
 
             self.set_ad_idea()

+ 9 - 1
wechat_action/create_ad_plan_idea.py

@@ -221,7 +221,7 @@ class IdeaAction:
         self.push_promotion_page()
 
     def idea_pyq(self):
-        #TODO:添加idea_name,idea_moudle,
+        # TODO:添加idea_moudle,
         logging.info('朋友圈--文案设置')
         WebDriverWait(self.driver, 100).until(
             lambda driver: self.driver.find_element_by_xpath('//*[@class="ql-editor ql-blank"]'))
@@ -231,6 +231,14 @@ class IdeaAction:
 
         time.sleep(random.uniform(0.1, 0.5))
 
+        # 朋友圈标题设置
+        #TODO:各处的标题需要进行对应设置----------导致结果数据库里的标题与微信标题不相同
+
+        for i in range(40):
+            self.driver.find_element_by_xpath('//*[@class="input-2lFnByGCRh"]').send_keys(Keys.BACKSPACE)
+        self.driver.find_element_by_xpath('//*[@class="input-2lFnByGCRh"]').send_keys(
+            self.task['idea']['name'].replace(' ', '')[:29])
+
         # 朋友圈其他设置
         select_elements = self.driver.find_elements_by_xpath('//*[@class="label-2ZOAbuO31o"]')
         for _ in select_elements: