login_ad.py 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. from selenium import webdriver
  2. from selenium.webdriver import ActionChains
  3. from selenium.webdriver.common.by import By
  4. from selenium.webdriver.support import expected_conditions as EC
  5. from selenium.webdriver.support.wait import WebDriverWait
  6. from wechat_action.send_ad_idea import IdeaAction
  7. from wechat_action.human_ad import HumanAd
  8. from selenium.webdriver import ChromeOptions
  9. import time
  10. class LogIn:
  11. def __init__(self):
  12. # 获取到单独服务商下的独立公众号页面
  13. self.driver = self.get_driver()
  14. self.log_in()
  15. self.select_ad_master()
  16. pass
  17. def get_driver(self):
  18. options = ChromeOptions()
  19. # 防止selenium快速崩坏
  20. options.add_argument("--disable-dev-shm-usage")
  21. # driver = webdriver.Remote(
  22. # command_executor='http://192.168.7.245:4444/wd/hub',
  23. # options=options)
  24. driver = webdriver.Chrome()
  25. driver.maximize_window()
  26. return driver
  27. def log_in(self):
  28. self.driver.get('https://a.weixin.qq.com/index.html')
  29. self.driver.save_screenshot('wechat_page_start.png')
  30. img_selector = 'body > div.old-template > div > div > div.waiting.panelContent > div.wrp_code > img'
  31. 'body > div.old-template > div > div > div.waiting.panelContent > div.wrp_code > img'
  32. frame_login = self.driver.find_element_by_xpath('//*[@id="login_container"]/iframe')
  33. self.driver.switch_to.frame(frame_login)
  34. # WebDriverWait(driver, 3).until(EC.invisibility_of_element_located((By.CSS_SELECTOR, img_selector)))
  35. # time.sleep(3)
  36. img_url = self.driver.find_element_by_css_selector(img_selector)
  37. print('img', img_url.get_attribute('src'))
  38. WebDriverWait(self.driver, 100).until(lambda driver: driver.find_elements_by_link_text('广告投放'))
  39. self.driver.save_screenshot('get_in_page.png')
  40. def select_ad_master(self):
  41. self.driver.execute_script('''
  42. window.scroll(0,1000000);
  43. ''')
  44. self.driver.find_element_by_css_selector(
  45. '#root > div > header > div > div.CoreLayout__account-2lIr0 > div').click()
  46. self.driver.find_element_by_css_selector(
  47. '#root > div > div.CoreLayout__headerDropdown-3xWkD > div > div:nth-child(1) > button').click()
  48. service_names = self.driver.find_elements_by_class_name('CoreLayout__headerDropdownItem-X4S98')
  49. choice_service = None
  50. for service_name in service_names:
  51. if '上饶' in service_name.text:
  52. choice_service = service_name
  53. choice_service.click()
  54. # 挑选广告投放位置
  55. self.driver.execute_script('''
  56. window.scroll(100000,1000000);
  57. var e_one=document.getElementsByClassName('Table_new__wrapper-1cpZN')[0];
  58. e_one.scroll(10000,100000);
  59. ''')
  60. elements = self.driver.find_elements_by_link_text('广告投放')
  61. # ActionChains(driver).move_to_element(elements[0]).perform()
  62. elements[0].click()
  63. time.sleep(1)
  64. # 切换窗口,点击创建广告,切到广告页面
  65. self.driver.switch_to.window(self.driver.window_handles[-1])
  66. WebDriverWait(self.driver, 100).until(lambda driver: driver.find_element_by_class_name(
  67. 'adui-button-hasLeftIcon'))
  68. def get_driver_loged(self):
  69. return self.driver