1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- 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
|