from selenium import webdriver from selenium.webdriver import ActionChains from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC 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, 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() def get_driver(self): options = ChromeOptions() # 防止selenium快速崩坏 options.add_argument("--disable-dev-shm-usage") # driver = webdriver.Remote( # command_executor='http://192.168.7.245:4444/wd/hub', # options=options) driver = webdriver.Chrome() driver.maximize_window() return driver def log_in(self): self.driver.get('https://a.weixin.qq.com/index.html') self.driver.save_screenshot('wechat_page_start.png') img_selector = 'body > div.old-template > div > div > div.waiting.panelContent > div.wrp_code > img' 'body > div.old-template > div > div > div.waiting.panelContent > div.wrp_code > img' frame_login = self.driver.find_element_by_xpath('//*[@id="login_container"]/iframe') self.driver.switch_to.frame(frame_login) # WebDriverWait(driver, 3).until(EC.invisibility_of_element_located((By.CSS_SELECTOR, img_selector))) # time.sleep(3) img_url = self.driver.find_element_by_css_selector(img_selector) print('img', img_url.get_attribute('src')) WebDriverWait(self.driver, 100).until(lambda driver: driver.find_elements_by_link_text('广告投放')) self.driver.save_screenshot('get_in_page.png') def select_ad_master(self): self.driver.execute_script(''' window.scroll(0,1000000); ''') self.driver.find_element_by_css_selector( '#root > div > header > div > div.CoreLayout__account-2lIr0 > div').click() self.driver.find_element_by_css_selector( '#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 _ 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() time.sleep(1) # 切换窗口,点击创建广告,切到广告页面 self.driver.switch_to.window(self.driver.window_handles[-1]) WebDriverWait(self.driver, 100).until(lambda driver: driver.find_element_by_class_name( 'adui-button-hasLeftIcon')) def get_driver_loged(self): return self.driver