import time import random from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.wait import WebDriverWait 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): 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)) # 信息栏类型 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): pass