瀏覽代碼

ADD:添加button,text部件灵活性

cxyu 4 年之前
父節點
當前提交
9fa52c187b
共有 2 個文件被更改,包括 159 次插入77 次删除
  1. 145 72
      wechat_action/create_ad.py
  2. 14 5
      wechat_action/login_ad.py

+ 145 - 72
wechat_action/create_ad.py

@@ -15,9 +15,9 @@ from logging import handlers
 
 
 class CreateAd:
-    def __init__(self):
+    def __init__(self, service_name, wechat_name):
         # TODO:创建完页面需要关闭所有页面并回到一开始的页面
-        self.driver = LogIn().get_driver_loged()
+        self.driver = LogIn(service_name, wechat_name).get_driver_loged()
         self.get_into_create_page()
         self.send_file_limit_num = 8
 
@@ -41,6 +41,15 @@ class CreateAd:
         # 创建编排
         pass
 
+    def set_advertisement_sign(self):
+        # 设置广告标记
+        now_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
+        self.driver.find_element_by_xpath('//*[@class="icon-edQB0KK2VG"]').click()
+        input_element = self.driver.find_element_by_xpath('//input[@class="input-2lFnByGCRh"]')
+        input_element.send_keys(Keys.BACKSPACE)
+        input_element.send_keys(now_time)
+        return now_time
+
     def set_background_color(self):
         color_buttons = self.driver.find_elements_by_class_name('adui-cp-picker')
         c_buttons_can_use = []
@@ -314,78 +323,92 @@ class CreateAd:
             logging.info(e)
         logging.info('图片模块设置结束')
 
-    def set_title(self, title_content):
-        # 设置标题模块
+    def set_content(self, config_info):
+        # 设置文本模块
+        # 1.文本内容2.文本颜色3.是否加粗4.文本位置设置5.文本大小
+
+        # 设置文本内容
         self.driver.find_element_by_xpath('//*[@id="stage-sidebar"]/section/div[2]/div[5]/div/div').click()
         time.sleep(random.uniform(0.2, 0.3))
         input_elements = self.driver.find_elements_by_xpath('//textarea[@class="adui-input-base"]')
         for _ in input_elements:
             if _.is_enabled() and _.is_displayed():
-                _.send_keys(title_content)
+                _.send_keys(config_info['content'])
 
-        color_buttons = self.driver.find_elements_by_class_name('adui-cp-picker')
-        c_buttons_can_use = []
-        for _ in color_buttons:
-            if _.is_displayed() and _.is_enabled():
-                c_buttons_can_use.append(_)
-        c_buttons_can_use[1].click()
-        time.sleep(random.uniform(0.2, 0.3))
+        # 设置颜色
+        if config_info['color'] != '595959':
+            color_buttons = self.driver.find_elements_by_class_name('adui-cp-picker')
+            c_buttons_can_use = []
+            for _ in color_buttons:
+                if _.is_displayed() and _.is_enabled():
+                    c_buttons_can_use.append(_)
+            c_buttons_can_use[1].click()
+            time.sleep(random.uniform(0.2, 0.3))
 
-        input_elements = self.driver.find_elements_by_tag_name('input')
-        for _ in input_elements:
-            if _.is_enabled() and _.is_displayed() and _.get_attribute("value") == '595959':
-                _.click()
-                _.send_keys('DE2821')
-        big_elements = self.driver.find_elements_by_class_name('adui-button-content')
-        for _ in big_elements:
-            if _.text == '加粗' and _.is_displayed() and _.is_enabled():
-                _.click()
-        loc_buttons = self.driver.find_elements_by_xpath("//div[contains(@class, 'adui-button-group_banner')]//button")
-        loc_buttons_can_use = []
-        for _ in loc_buttons:
-            if _.is_enabled() and _.is_displayed():
-                loc_buttons_can_use.append(_)
-        loc_buttons_can_use[1].click()
+            input_elements = self.driver.find_elements_by_tag_name('input')
+            for _ in input_elements:
+                if _.is_enabled() and _.is_displayed() and _.get_attribute("value") == '595959':
+                    _.click()
+                    _.send_keys(config_info['color'])
 
-        str_buttons = self.driver.find_elements_by_xpath("//*[@class='adui-select-selection__rendered']")
-        str_buttons_can_use = []
-        for _ in str_buttons:
-            if _.is_displayed() and _.is_enabled():
-                str_buttons_can_use.append(_)
-        str_buttons_can_use[1].click()
-        time.sleep(random.uniform(1, 3))
+        # 设置是否加粗
+        if config_info['is_bold']:
+            big_elements = self.driver.find_elements_by_class_name('adui-button-content')
+            for _ in big_elements:
+                if _.text == '加粗' and _.is_displayed() and _.is_enabled():
+                    _.click()
 
-        str_num_buttons = self.driver.find_elements_by_xpath("//*[@class='adui-select-dropdown-menu-item']")
-        str_num_can_use = []
-        for _ in str_num_buttons:
-            if _.is_displayed() and _.is_enabled():
-                str_num_can_use.append(_)
-        str_num_can_use[4].click()
+        # 设置文本位置
+        if config_info['loc'] != 'left':
+            loc_buttons = self.driver.find_elements_by_xpath(
+                "//div[contains(@class, 'adui-button-group_banner')]//button")
+            loc_buttons_can_use = []
+            for _ in loc_buttons:
+                if _.is_enabled() and _.is_displayed():
+                    loc_buttons_can_use.append(_)
+            if config_info['loc'] == 'middle':
+                loc_buttons_can_use[1].click()
+            if config_info['loc'] == 'right':
+                loc_buttons_can_use[2].click()
+
+        # 设置文本大小
+        if config_info['str_num'] != 15:
+            str_buttons = self.driver.find_elements_by_xpath("//*[@class='adui-select-selection__rendered']")
+            str_buttons_can_use = []
+            for _ in str_buttons:
+                if _.is_displayed() and _.is_enabled():
+                    str_buttons_can_use.append(_)
+            str_buttons_can_use[1].click()
+            time.sleep(random.uniform(1, 3))
 
-    def set_content(self, content_content):
-        # 输入文本内容
-        self.driver.find_element_by_xpath('//*[@id="stage-sidebar"]/section/div[2]/div[5]/div/div').click()
-        time.sleep(random.uniform(0.2, 0.3))
-        input_elements = self.driver.find_elements_by_xpath('//textarea[@class="adui-input-base"]')
-        for _ in input_elements:
-            if _.is_enabled() and _.is_displayed():
-                _.send_keys(content_content)
-        str_buttons = self.driver.find_elements_by_xpath("//*[@class='adui-select-selection__rendered']")
-        str_buttons_can_use = []
-        for _ in str_buttons:
-            if _.is_displayed() and _.is_enabled():
-                str_buttons_can_use.append(_)
-        str_buttons_can_use[1].click()
-        time.sleep(random.uniform(1, 3))
-        str_num_buttons = self.driver.find_elements_by_xpath("//*[@class='adui-select-dropdown-menu-item']")
-        str_num_can_use = []
-        for _ in str_num_buttons:
-            if _.is_displayed() and _.is_enabled():
-                str_num_can_use.append(_)
-        str_num_can_use[3].click()
+            str_num_buttons = self.driver.find_elements_by_xpath("//*[@class='adui-select-dropdown-menu-item']")
+            str_num_can_use = []
+            for _ in str_num_buttons:
+                if _.is_displayed() and _.is_enabled():
+                    str_num_can_use.append(_)
+            str_num_map = {14: 0, 16: 1, 18: 2, 20: 3, 24: 4, 36: 5}
+            str_num_can_use[str_num_map[config_info['str_num']]].click()
+
+        # 设置文本边距
+        if config_info['str_distance'][0] != 22 or config_info['str_distance'][1] != 22:
+            distance_buttons = self.driver.find_elements_by_xpath('//input[@class="adui-input-base"]')
+            distance_buttons_can_use = []
+            for _ in distance_buttons:
+                if _.is_enabled() and _.is_displayed() and _.get_attribute("value") == '22':
+                    distance_buttons_can_use.append(_)
+            distance_buttons_can_use[0].click()
+            for i in range(4):
+                distance_buttons_can_use[0].send_keys(Keys.BACKSPACE)
+            distance_buttons_can_use[0].send_keys(config_info['str_distance'][0])
+            distance_buttons_can_use[1].click()
+            for i in range(4):
+                distance_buttons_can_use[1].send_keys(Keys.BACKSPACE)
+            distance_buttons_can_use[1].send_keys(config_info['str_distance'][1])
 
     def set_follow_button(self, button_type):
         # 设置关注按钮
+        # 1.设置button文本内容2.是否加粗3.设置字体颜色,边框颜色,填充色4.设置边距
+
         self.driver.find_element_by_xpath('//*[@id="stage-sidebar"]/section/div[4]/div[2]/div/div').click()
         if button_type == 1:
             input_elements = self.driver.find_elements_by_xpath('//input[@class="adui-input-base"]')
@@ -475,9 +498,60 @@ class CreateAd:
                 size_buttons_can_use[1].send_keys(Keys.BACKSPACE)
             size_buttons_can_use[1].send_keys('100')
 
-    def set_movie(self):
-        # 设置视频
-        pass
+    def set_follow_button_(self, config_info):
+        # 设置关注按钮
+        # 1.设置button文本内容 2.是否加粗 3.设置字体颜色,边框颜色,填充色 4.设置边距
+
+        self.driver.find_element_by_xpath('//*[@id="stage-sidebar"]/section/div[4]/div[2]/div/div').click()
+        # 文本设置
+        input_elements = self.driver.find_elements_by_xpath('//input[@class="adui-input-base"]')
+        for _ in input_elements:
+            if _.is_enabled() and _.is_displayed() and _.get_attribute("value") == '关注公众号':
+                _.click()
+                _.clear()
+                for i in range(10):
+                    _.send_keys(Keys.BACKSPACE)
+                _.send_keys(config_info['content'])
+
+        # 文本是否加粗
+        if config_info['is_bold']:
+            big_elements = self.driver.find_elements_by_xpath('//span[@class="adui-button-content"]')
+            for _ in big_elements:
+                if _.text == '加粗' and _.is_displayed() and _.is_enabled():
+                    _.click()
+
+        # 颜色设置
+        input_elements = self.driver.find_elements_by_xpath('//input[@class="adui-input-base"]')
+        input_elements_can_use = []
+        for _ in input_elements:
+            if _.is_enabled() and _.is_displayed() and (
+                    _.get_attribute("value") == '07C160' or _.get_attribute("value") == 'FFFFFF'):
+                input_elements_can_use.append(_)
+
+        input_elements_can_use[0].click()
+        input_elements_can_use[0].send_keys(config_info['color1'])
+        time.sleep(random.uniform(0.1, 0.5))
+        input_elements_can_use[1].click()
+        input_elements_can_use[1].send_keys(config_info['color2'])
+        time.sleep(random.uniform(0.1, 0.5))
+        input_elements_can_use[2].click()
+        input_elements_can_use[2].send_keys(config_info['color3'])
+        time.sleep(random.uniform(0.1, 0.5))
+
+        # 间隙设置
+        size_buttons = self.driver.find_elements_by_xpath('//input[@class="adui-input-base"]')
+        size_buttons_can_use = []
+        for _ in size_buttons:
+            if _.is_enabled() and _.is_displayed() and _.get_attribute("value") == '28':
+                size_buttons_can_use.append(_)
+        size_buttons_can_use[0].click()
+        for i in range(4):
+            size_buttons_can_use[0].send_keys(Keys.BACKSPACE)
+        size_buttons_can_use[0].send_keys(config_info['str_distance'][0])
+        size_buttons_can_use[1].click()
+        for i in range(4):
+            size_buttons_can_use[1].send_keys(Keys.BACKSPACE)
+        size_buttons_can_use[1].send_keys(config_info['str_distance'][1])
 
     def set_text_button(self):
         # 设置图文按钮
@@ -601,13 +675,14 @@ class CreateAd:
         self.driver.execute_script('window.close();')
         self.driver.switch_to.window(self.driver.window_handles[-1])
 
-    def send_moive_spic(self):
-        # 特殊情况下,上传本地视频
+    def set_share_content(self):
+        # TODO:设置分享标题,文本
         pass
 
-    def get_layout(self,layout):
+    def get_layout(self, layout):
         # TODO:设置重试机制,然后错误后试错几次,查看是否成功
-        # self.send_file_alone(layout)
+        self.send_file_alone(layout)
+        advertisement_sign = self.set_advertisement_sign()
         self.set_head_assemb(layout[-1])
         if -2 in layout.keys():
             self.set_background_color()
@@ -618,13 +693,12 @@ class CreateAd:
             info_v = info[info_key]
             if info_key == 'page':
                 self.set_page(info_v)
-            if info_key == 'title':
-                self.set_title(info_v)
             if info_key == 'content':
                 self.set_content(info_v)
             if info_key == 'follow_button':
-                self.set_follow_button(info_v)
+                self.set_follow_button_(info_v)
         time.sleep(100)
+        return advertisement_sign
 
 
 if __name__ == '__main__':
@@ -639,4 +713,3 @@ if __name__ == '__main__':
         level=logging.INFO,
         format="%(asctime)s - %(levelname)s %(filename)s %(funcName)s %(lineno)s - %(message)s"
     )
-

+ 14 - 5
wechat_action/login_ad.py

@@ -6,15 +6,19 @@ from selenium.webdriver.support.wait import WebDriverWait
 from wechat_action.send_ad_idea import IdeaAction
 from wechat_action.human_ad import HumanAd
 from selenium.webdriver import ChromeOptions
+from selenium.webdriver.common.keys import Keys
 import time
 
+
 class LogIn:
-    def __init__(self):
+    def __init__(self, service_name, wechat_name):
         # 获取到单独服务商下的独立公众号页面
+        self.service_name = service_name
+        self.wechat_name = wechat_name
         self.driver = self.get_driver()
         self.log_in()
         self.select_ad_master()
-        pass
+
 
     def get_driver(self):
         options = ChromeOptions()
@@ -52,16 +56,21 @@ class LogIn:
             '#root > div > div.CoreLayout__headerDropdown-3xWkD > div > div:nth-child(1) > button').click()
         service_names = self.driver.find_elements_by_class_name('CoreLayout__headerDropdownItem-X4S98')
         choice_service = None
-        for service_name in service_names:
-            if '上饶' in service_name.text:
-                choice_service = service_name
+        for _ in service_names:
+            if self.service_name in _.text:
+                choice_service = _
         choice_service.click()
         # 挑选广告投放位置
+        input_wechat_name =self.driver.find_element_by_class_name('TextInput_new__iconRight-pekjS')
+        input_wechat_name.click()
+        input_wechat_name.send_keys(self.wechat_name)
+        input_wechat_name.send_keys(Keys.RETURN)
         self.driver.execute_script('''
             window.scroll(100000,1000000);
             var e_one=document.getElementsByClassName('Table_new__wrapper-1cpZN')[0];
             e_one.scroll(10000,100000);
             ''')
+        time.sleep(5)
         elements = self.driver.find_elements_by_link_text('广告投放')
         # ActionChains(driver).move_to_element(elements[0]).perform()
         elements[0].click()