send_ad_idea.py 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. import time
  2. import random
  3. from selenium.webdriver.common.keys import Keys
  4. from selenium.webdriver.support.wait import WebDriverWait
  5. class IdeaAction:
  6. def __init__(self, driver, task):
  7. self.driver = driver
  8. self.task = task
  9. def send_page(self):
  10. WebDriverWait(self.driver, 10).until(
  11. lambda driver: self.driver.find_element_by_class_name('webuploader-element-invisible'))
  12. page_input = self.driver.find_element_by_class_name('webuploader-element-invisible')
  13. page_input.send_keys(self.task['idea']['page_path'])
  14. try:
  15. WebDriverWait(self.driver, 100).until(lambda driver: driver.find_element_by_xpath(
  16. '//*[@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]'))
  17. self.driver.find_element_by_xpath(
  18. '//*[@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()
  19. WebDriverWait(self.driver, 100).until(
  20. lambda driver: self.driver.find_element_by_xpath('//*[@id="test_progress_confirm"]'))
  21. suc_button = self.driver.find_element_by_xpath('//*[@id="test_progress_confirm"]')
  22. WebDriverWait(self.driver, 100).until(lambda driver: suc_button.is_displayed() and suc_button.is_enabled())
  23. suc_button.click()
  24. except:
  25. pass
  26. def push_promotion_page(self):
  27. idea_dic = self.task['idea']
  28. select_elements = self.driver.find_elements_by_xpath('//*[@class="label-2ZOAbuO31o"]')
  29. # 点击跳转
  30. for _ in select_elements:
  31. if _.text == '公众号详情页' and idea_dic['jump_type'] == 2:
  32. _.click()
  33. time.sleep(random.uniform(0.1, 0.2))
  34. # 按钮文案
  35. for _ in select_elements:
  36. if _.text == '立即咨询' and idea_dic['button_type'] == 2:
  37. _.click()
  38. if _.text == '立即申请' and idea_dic['button_type'] == 3:
  39. _.click()
  40. if _.text == '阅读小说' and idea_dic['button_type'] == 4:
  41. _.click()
  42. time.sleep(random.uniform(0.1, 0.2))
  43. if idea_dic['jump_type'] == 1:
  44. # 点击按钮跳转
  45. for _ in select_elements:
  46. if _.text == '一键关注' and idea_dic['jump_type-button_type'] == 2:
  47. _.click()
  48. time.sleep(random.uniform(0.1, 0.2))
  49. # 原生推广页选择
  50. self.driver.find_element_by_xpath('//*[@id="choose_template"]').click()
  51. select_elements = self.driver.find_elements_by_xpath('//*[@class="inputWrapper-3fBModc9zM"]')
  52. for _ in select_elements:
  53. if _.get_attribute("placeholder") == '输入关键字搜索推广页':
  54. _.send_keys(idea_dic['jump_type-page_type'])
  55. _.send_keys(Keys.RETURN)
  56. WebDriverWait(self.driver, 30).until(
  57. lambda driver: self.driver.find_elements_by_xpath('//*[@class="adui-table-cellInner"]'))
  58. page_elements = self.driver.find_elements_by_xpath('//*[@class="adui-table-cellInner"]')
  59. for _ in page_elements:
  60. # 推广页的名字需要一模一样
  61. if _.text == idea_dic['jump_type-page_type']:
  62. _.click()
  63. time.sleep(random.uniform(0.1, 0.2))
  64. self.driver.find_element_by_xpath('//*[@id="select_canvas_ok_btn"]/span').click()
  65. '//*[@id="test_creative_next_step"]'
  66. time.sleep(random.uniform(0.1, 0.2))
  67. def idea_pic_gzh_botoom(self):
  68. # 上传图片
  69. self.send_page()
  70. time.sleep(random.uniform(1, 2))
  71. # 信息栏类型
  72. idea_dic = self.task['idea']
  73. select_elements = self.driver.find_elements_by_xpath('//*[@class="label-2ZOAbuO31o"]')
  74. input_elements = self.driver.find_elements_by_xpath('//*[@class="input-3MbKvywHL2"]')
  75. # 信息栏
  76. if idea_dic['info_type'] == 1:
  77. # 头像
  78. for _ in select_elements:
  79. if _.text == '头像昵称型':
  80. _.click()
  81. if idea_dic['info_type'] == 2:
  82. # 文案
  83. for _ in select_elements:
  84. if _.text == '文案型':
  85. _.click()
  86. for _ in input_elements:
  87. # 信息栏文案
  88. if _.get_attribute("placeholder") == '信息栏文案':
  89. _.send_keys(idea_dic['info_type-content'])
  90. time.sleep(random.uniform(0.1, 0.2))
  91. self.push_promotion_page()
  92. def idea_banner_pic_gzh_botoom(self):
  93. WebDriverWait(self.driver, 10).until(
  94. lambda driver: self.driver.find_element_by_class_name('webuploader-element-invisible'))
  95. select_elements = self.driver.find_elements_by_xpath('//*[@class="label-2ZOAbuO31o"]')
  96. # 创意样式
  97. for _ in select_elements:
  98. if _.text == '图片式卡片':
  99. _.click()
  100. break
  101. # 上传图片
  102. self.send_page()
  103. time.sleep(random.uniform(0.5, 0.7))
  104. # 标签设置
  105. select_elements = self.driver.find_elements_by_xpath('//*[@class="label-2ZOAbuO31o"]')
  106. for _ in select_elements:
  107. if _.text == '转换目标量标签' and self.task['idea']['lable_type'] == 2:
  108. _.click()
  109. # 素材设置
  110. time.sleep(random.uniform(0.1, 0.2))
  111. self.push_promotion_page()
  112. def idea_banner_business_gzh_bottom(self):
  113. WebDriverWait(self.driver, 10).until(
  114. lambda driver: self.driver.find_element_by_xpath('//*[@id="test_material_type_135"]/span[2]'))
  115. self.driver.find_element_by_css_selector('#test_material_type_135 > span.inputWrapper-3fBModc9zM > i').click()
  116. wen_input = self.driver.find_element_by_class_name('input-3MbKvywHL2')
  117. wen_input.send_keys(self.task['idea']['idea_content'])
  118. time.sleep(random.uniform(0.2, 0.5))
  119. self.push_promotion_page()
  120. def idea_gzh_bottom(self):
  121. if self.task['idea']['idea_type'] == 1:
  122. self.idea_pic_gzh_botoom()
  123. if self.task['idea']['idea_type'] == 2:
  124. self.idea_banner_pic_gzh_botoom()
  125. if self.task['idea']['idea_type'] == 3:
  126. self.idea_banner_business_gzh_bottom()
  127. def idea_movie_gzh_movie(self):
  128. WebDriverWait(self.driver, 10).until(
  129. lambda driver: driver.find_element_by_class_name('webuploader-element-invisible'))
  130. self.driver.find_element_by_class_name('webuploader-element-invisible').send_keys(
  131. self.task['idea']['movie_path'])
  132. suc_button = self.driver.find_element_by_id('test_progress_confirm')
  133. WebDriverWait(self.driver, 1000).until(lambda x: (suc_button.is_displayed() and suc_button.is_enabled()))
  134. self.driver.find_element_by_id('test_progress_confirm').click()
  135. time.sleep(random.uniform(0.4, 0.6))
  136. self.push_promotion_page()
  137. time.sleep(random.uniform(0.4, 0.6))
  138. text_input = self.driver.find_element_by_css_selector('#reward_video_desc > div > input')
  139. text_input.send_keys(self.task['idea']['content'])
  140. select_elements = self.driver.find_elements_by_xpath('//*[@class="label-2ZOAbuO31o"]')
  141. for _ in select_elements:
  142. if _.text == '转化目标量标签' and self.task['idea']['lable_type'] == 2:
  143. _.click()
  144. def idea_big_pic(self):
  145. # 设置图片
  146. self.send_page()
  147. idea_dic = self.task['idea']
  148. select_elements = self.driver.find_elements_by_xpath('//*[@class="label-2ZOAbuO31o"]')
  149. input_elements = self.driver.find_elements_by_xpath('//*[@class="input-3MbKvywHL2"]')
  150. # 信息栏
  151. if idea_dic['info_type'] == 1:
  152. # 头像
  153. for _ in select_elements:
  154. if _.text == '头像昵称型':
  155. _.click()
  156. if idea_dic['info_type'] == 2:
  157. # 文案
  158. for _ in select_elements:
  159. if _.text == '文案型':
  160. _.click()
  161. for _ in input_elements:
  162. # 信息栏文案
  163. if _.get_attribute("placeholder") == '信息栏文案':
  164. _.send_keys(idea_dic['info_type-content'])
  165. time.sleep(random.uniform(0.1, 0.2))
  166. # 图文标题
  167. self.driver.find_element_by_xpath('//*[@id="test_first_line_input"]/div/input').send_keys(idea_dic['title'])
  168. time.sleep(random.uniform(0.1, 0.2))
  169. # 广告文案
  170. for _ in input_elements:
  171. if _.get_attribute("placeholder") == '请输入首行文案':
  172. _.send_keys(idea_dic['content_one'])
  173. time.sleep(random.uniform(0.1, 0.2))
  174. if _.get_attribute("placeholder") == '请输入次行文案':
  175. _.send_keys(idea_dic['content_two'])
  176. time.sleep(random.uniform(0.1, 0.2))
  177. if _.get_attribute("placeholder") == '请输入第三行文案(选填)':
  178. _.send_keys(idea_dic['content_three'])
  179. time.sleep(random.uniform(0.1, 0.2))
  180. # 标签展示
  181. for _ in select_elements:
  182. if _.text == '不启用' and idea_dic['lable_type'] == 1:
  183. _.click()
  184. if _.text == '好友关注量标签' and idea_dic['lable_type'] == 2:
  185. _.click()
  186. if _.text == '转化目标量标签' and idea_dic['lable_type'] == 3:
  187. _.click()
  188. time.sleep(random.uniform(0.1, 0.2))
  189. self.push_promotion_page()
  190. def idea_pyq(self):
  191. print(self.driver.current_url)
  192. '//*[@id="wxadcontainer"]/div[1]/div/div[2]/main/div/div[2]/div[2]/div/div[1]/div[1]/div[2]/form/div[2]/div/div[1]/div[2]/div'
  193. WebDriverWait(self.driver, 100).until(
  194. lambda driver: self.driver.find_element_by_xpath('//*[@class="ql-editor ql-blank"]'))
  195. self.driver.find_element_by_xpath(
  196. '//*[@class="ql-editor ql-blank"]'
  197. ).send_keys(self.task['idea']['content'])
  198. time.sleep(random.uniform(0.1, 0.5))
  199. self.push_promotion_page()
  200. time.sleep(random.uniform(0.1, 0.5))
  201. if self.task['idea']['data_show'] == 2:
  202. self.driver.find_element_by_xpath(
  203. '//*[@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()
  204. if self.task['idea']['data_show-type'] == 2:
  205. time.sleep(random.uniform(0.1, 0.5))
  206. WebDriverWait(self.driver, 100).until(lambda driver: self.driver.find_element_by_xpath(
  207. '//*[@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]'))
  208. self.driver.find_element_by_xpath(
  209. '//*[@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()