123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- import time
- import random
- from selenium.webdriver.common.keys import Keys
- from selenium.webdriver.support.wait import WebDriverWait
- import logging
- class IdeaAction:
- def __init__(self, driver, task):
- self.driver = driver
- self.task = task
- 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):
- # TODO:对于朋友圈需要整体新建一个-----问题挺多
- 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"]')
- input_elements = self.driver.find_element_by_xpath('//*[@class="adui-input-base"]')
- for _ in input_elements:
- if _.get_attribute("placeholder") == '输入关键字搜索推广页':
- _.send_keys(idea_dic['jump_type_page_type']['layout_name'])
- _.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']['layout_name']:
- _.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))
- # 信息栏类型
- 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(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(
- 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))
- text_input = self.driver.find_element_by_css_selector('#reward_video_desc > div > input')
- 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):
- # 设置图片
- 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"]')
- # 信息栏
- 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.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))
- self.push_promotion_page()
- def idea_pyq(self):
- # TODO:添加idea_moudle,
- logging.info('朋友圈--文案设置')
- WebDriverWait(self.driver, 100).until(
- lambda driver: self.driver.find_element_by_xpath('//*[@class="ql-editor ql-blank"]'))
- self.driver.find_element_by_xpath(
- '//*[@class="ql-editor ql-blank"]'
- ).send_keys(self.task['idea']['content'])
- 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:
- if _.text == '了解更多' and self.task['idea']['jump_type_text_type'] == 2:
- _.click()
- if _.text == '原生推广页' and self.task['idea']['jump_type_link_type'] == 2:
- _.click()
- # 朋友圈推广页选择
- logging.info('朋友圈--推广页设置')
- self.driver.find_element_by_xpath('//*[@id="choose_template"]').click()
- input_elements = self.driver.find_elements_by_xpath('//*[@class="adui-input-base"]')
- for _ in input_elements:
- if _.get_attribute("placeholder") == '输入关键字搜索推广页':
- _.send_keys(self.task['idea']['jump_type_page_type']['layout_name'])
- _.send_keys(Keys.RETURN)
- # TODO:有空去除这个时间,使用等待
- time.sleep(random.uniform(0.5, 1))
- 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 == self.task['idea']['jump_type_page_type']['layout_name']:
- _.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))
- time.sleep(random.uniform(0.1, 0.5))
- if self.task['idea']['data_show'] == '2':
- 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]/form/div[5]/div[1]/div/span/span[1]').click()
- if self.task['idea']['data_show-type'] == '2':
- time.sleep(random.uniform(0.1, 0.5))
- WebDriverWait(self.driver, 100).until(lambda driver: 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]/form/div[5]/div[2]/div/div[1]/label/span[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]/form/div[5]/div[2]/div/div[1]/label/span[1]').click()
|