#! /usr/bin/env python import sys import time sys.path.insert(0, '.') import json from tracker import config, mailer from tracker.logger import get_logger logger = get_logger(__name__) from tracker.instagram.instascrape import store_screenshot, _login_to_instagram from tracker.webdriver import my_driver def visit_instagram_and_login(): with my_driver(include_remote_profile=True) as driver: _login_to_instagram(driver, config.insta_username, config.insta_password) def test_insta_scouting(): from tracker import runner logger.info("Starting instagram scouting in 30 seconds") import time; time.sleep(30) logger.info("Awake!") runner.instagram_scouting(limit=2, use_xhr_injection=True) def visit_example(): images = [] with my_driver(include_remote_profile=True, force_touch_profile_dir=True) as driver: logger.info("Driver initialised successfully") images.append(store_screenshot(driver, 'testing')) driver.get('http://example.com/') images.append(store_screenshot(driver, 'testing')) logger.info("Screenshot saved.") logs = driver.get_console_logs() if not logs: logger.info("No console logs created during selenium run") for log in logs or []: logger.info("Console log detected: {}".format(log), extra=log) send_email(logs or [], images or []) wait_20_minutes_or_until_at_sentinel_site(driver) def send_email(logs, image_urls): logjson = "\n\n".join([json.dumps(l, indent=2) for l in logs]) images = "\n".join([ f'''
''' for imgurl in image_urls ]) html = f'''

Logs


{logjson}


{images}

DONE!

''' mailer.send_simple_message("ECS Selenium Test Completed", html=html) def wait_20_minutes_or_until_at_sentinel_site(driver): exit_time = time.time() + 20*60 while time.time() < exit_time: if 'axios.com' in driver.current_url: logger.info("Reached sentinel axios.com, exiting") return 0 time.sleep(5) logger.info("20 minutes elapsed, exiting") return 1 logger.info("Starting selenium test") import os if True or os.environ.get('WL_TEST_THIS') == 'LOGIN': logger.info("Will open instagram for login") time.sleep(90) with my_driver(include_remote_profile=True) as driver: driver.get('https://instagram.com/accounts/login') logger.info("Page should be open. Sleeping for 5 minutes.") time.sleep(300) else: logger.info("Doing instagram tests") test_insta_scouting() raise RuntimeError("This is a test")