def execute_event_auto(self, event): eventStartTime = int(round(time.time() * 1000)) chrome_options = Options() chrome_options.add_argument("--headless") chrome_options.add_argument("--user-data-dir=/tmp/chromium-user-dir") chrome_options.add_argument("--user-agent=TweetoasterAutomaticMode") if (chrome_auto_port != None): chrome_options.add_experimental_option( "debuggerAddress", "127.0.0.1:" + str(chrome_auto_port[current_process().index])) # 增加UA以触发Google Analytics # chrome_options.add_argument("--proxy-server=127.0.0.1:12333") driver_frontend = webdriver.Chrome(options=chrome_options) try: processor = TweetProcess(driver_frontend) param = { 'tweet': event['tweet'], 'template': event['template'], 'out': 1 } if event['translate'] != '': param['translate'] = event['translate'] if 'noLikes' in event and event['noLikes']: param['noLikes'] = event['noLikes'] driver_frontend.get(self_url + "?" + parse.urlencode(param).replace("+", "%20")) # time.sleep(20) try: WebDriverWait(driver_frontend, 60, 0.5).until( EC.presence_of_element_located((By.CSS_SELECTOR, 'canvas'))) except: driver_frontend.save_screenshot( f'Matsuri_translation/frontend/cache/LastErrorAuto.png') finally: filename = processor.save_screenshots_auto(eventStartTime) try: event["filename"] = filename insert_text_chunk( f'Matsuri_translation/frontend/cache/{filename}.png', f'Matsuri_translation/frontend/cache/{filename}.png', json.dumps(event).encode("utf-8")) except: print("error in metadata") except: driver_frontend.save_screenshot( f'Matsuri_translation/frontend/cache/LastErrorAuto.png') finally: # time.sleep(5) driver_frontend.quit() return filename
def get_capabilities(cls, extensions=None): from selenium.webdriver.chrome.webdriver import Options as ChromeOptions chrome_options = ChromeOptions() if extensions: for extension in extensions: chrome_options.add_extension(extension) chrome_options.add_experimental_option( 'prefs', { 'credentials_enable_service': False, 'profile': { 'password_manager_enabled': False } }) chrome_capabilities = chrome_options.to_capabilities() chrome_capabilities['loggingPrefs'] = {'browser': 'ALL'} return chrome_capabilities
def execute_event(self, event): # logger.info(execute_event.name) # logger.info(self.request) # logger.info(current_process().index) chrome_options = Options() chrome_options.add_argument("--headless") if (chrome_twitter_port != None): chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:" + str(chrome_twitter_port[current_process().index])) # chrome_options.add_argument("--user-data-dir=/tmp/chromium-user-dir") # chrome_options.add_argument("--no-sandbox") # WIDTH = 640 # 宽度 # HEIGHT = 4000 # 高度 # PIXEL_RATIO = 1.0 # 分辨率 # # mobileEmulation = {"deviceMetrics": {"width": WIDTH, "height": HEIGHT, "pixelRatio": PIXEL_RATIO}} # chrome_options.add_experimental_option('mobileEmulation', mobileEmulation) # chrome_options.add_argument( # "--user-agent=Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) Waterfox/56.2") # chrome_options.add_argument("--proxy-server=127.0.0.1:12333") driver = webdriver.Chrome(options=chrome_options) filename = 'success|[]' #logger.info("tweet.execute_event.chrome_started") try: processor = TweetProcess(driver) processor.open_page(event['url']) #logger.info("tweet.execute_event.page_opened") processor.modify_tweet() # logger.info("tweet.execute_event.js_executed") # processor.scroll_page_to_tweet(event['fast']) filename = processor.save_screenshots(event['fast']) #logger.info("tweet.execute_event.png_get") except: # driver.save_screenshot(f'Matsuri_translation/frontend/cache/LastError.png') driver.quit() return 'LastError|[]' finally: # # time.sleep(5) driver.quit() # return filename
def get_capabilities(cls, extensions=None): from selenium.webdriver.chrome.webdriver import Options as ChromeOptions chrome_options = ChromeOptions() chrome_options.add_argument( '--allow-running-insecure-content') # Move to a config? if extensions: for extension in extensions: chrome_options.add_extension(extension) chrome_options.add_experimental_option( 'prefs', { 'credentials_enable_service': False, 'profile': { 'password_manager_enabled': False } }) if 'mobile_emulation' in capabilities.keys( ) and capabilities['mobile_emulation']: chrome_options.add_experimental_option( 'mobileEmulation', capabilities['mobile_emulation']) chrome_capabilities = chrome_options.to_capabilities() chrome_capabilities['loggingPrefs'] = {'browser': 'ALL'} return chrome_capabilities
def execute_event(self, event): logger.info(execute_event.name) logger.info(self.request) logger.info(current_process().index) chrome_options = Options() chrome_options.add_argument("--headless") chrome_options.add_argument('--disable-dev-shm-usage') if (chrome_twitter_port != None): logger.info('chrome_twitter_port ' + str(chrome_twitter_port)) chrome_options.add_experimental_option( "debuggerAddress", "127.0.0.1:" + str(chrome_twitter_port[current_process().index])) chrome_options.add_argument("--no-sandbox") try: driver = webdriver.Chrome(options=chrome_options) except Exception as e: import traceback logger.error(e) traceback.print_exc() raise e filename = 'success|[]' logger.info("tweet.execute_event.chrome_started") try: processor = TweetProcess(driver) processor.open_page(event['url']) logger.info("tweet.execute_event.page_opened") processor.modify_tweet() logger.info("tweet.execute_event.js_executed") # processor.scroll_page_to_tweet(event['fast']) filename = processor.save_screenshots(event['fast']) logger.info("tweet.execute_event.png_get") except: return 'LastError|[]' finally: driver.quit() return filename
def execute_event(event): chrome_options = Options() chrome_options.add_argument("--headless") chrome_options.add_argument("--user-data-dir=/tmp/chromium-user-dir") # chrome_options.add_argument("--no-sandbox") WIDTH = 640 # 宽度 HEIGHT = 4000 # 高度 PIXEL_RATIO = 1.0 # 分辨率 mobileEmulation = { "deviceMetrics": { "width": WIDTH, "height": HEIGHT, "pixelRatio": PIXEL_RATIO } } chrome_options.add_experimental_option('mobileEmulation', mobileEmulation) # chrome_options.add_argument( # "--user-agent=Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; AS; rv:11.0) Waterfox/56.2") # chrome_options.add_argument("--proxy-server=127.0.0.1:12333") driver = webdriver.Chrome(options=chrome_options) filename = 'success|[]' try: processor = TweetProcess(driver) processor.open_page(event['url']) processor.modify_tweet() processor.scroll_page_to_tweet(event['fast']) filename = processor.save_screenshots() except: # driver.save_screenshot(f'Matsuri_translation/frontend/cache/LastError.png') driver.quit() return 'LastError|[]' finally: # # time.sleep(5) driver.quit() # return filename
# coding:utf-8 # author: Articuly # datetime: 2020/6/12 17:54 # software: PyCharm import time, random import pickle from selenium import webdriver from selenium.webdriver.chrome.webdriver import Options, WebDriver # 创建实例 options = Options() # 开启无头模式 options.headless = True options.add_argument('window-size=1550x838') options.add_experimental_option('excludeSwitches', ['enable-automation']) browser = WebDriver(r'D:\Browser\Chromium\chromedriver.exe', options=options) # 打开网页 browser.get('https://www.taobao.com') # 将浏览器最大化显示 browser.maximize_window() print('windows', browser.get_window_size()) # 隐性等待页面加载完成,如果一个元素获取不到,会等待30s browser.implicitly_wait(30) try: with open('cookie.txt', 'rb') as f: cookies = pickle.load(f) except Exception as e: print(e)
from selenium.webdriver.chrome.webdriver import Options, WebDriver from time import sleep # 创建实例 options = Options() options.add_experimental_option('excludeSwitches', ['enable-automation']) # 关闭浏览器受到控制的提示 browser = WebDriver(r'D:\Browser\Chromium\chromedriver.exe', options=options) browser.get("https://www.baidu.com") sleep(2) # 打印浏览器的宽和高 size_Dict = browser.get_window_size() print("当前浏览器的宽:", size_Dict['width']) print("当前浏览器的高:", size_Dict['height']) # 设置浏览器的大小 browser.set_window_size(width=800, height=500, windowHandle="current") # windowHandle = "current" 控制当前窗口的意思 sleep(2) # 打印窗口坐标 position = browser.get_window_position() print(position) print("浏览器所在位置的横坐标:", position["x"]) print("浏览器所在位置的纵坐标:", position["y"]) # 设置窗口位置并打印位置坐标 browser.set_window_position(x=100, y=200) print(browser.get_window_position()) sleep(2)
finally: # time.sleep(5) driver_frontend.quit() return filename if __name__ == "__main__": event = { 'url': 'https://twitter.com/minatoaqua/status/1383771374183878658' } chrome_options = Options() chrome_options.add_argument("--headless") if (chrome_twitter_port != None): chrome_options.add_experimental_option( "debuggerAddress", "127.0.0.1:" + str(chrome_twitter_port[current_process().index])) driver = webdriver.Chrome(options=chrome_options) filename = 'success|[]' # logger.info("tweet.execute_event.chrome_started") try: processor = TweetProcess(driver) processor.open_page(event['url']) # logger.info("tweet.execute_event.page_opened") processor.modify_tweet() # logger.info("tweet.execute_event.js_executed") # processor.scroll_page_to_tweet(event['fast']) filename = processor.save_screenshots(event['fast']) # logger.info("tweet.execute_event.png_get") except: