2019-04-30 14:44:19 -07:00
|
|
|
import re
|
|
|
|
|
import os
|
|
|
|
|
import sys
|
2019-04-30 19:19:00 -07:00
|
|
|
|
|
|
|
|
from core.log import setup_logger
|
2019-04-30 14:44:19 -07:00
|
|
|
from core.utils import writer
|
|
|
|
|
from selenium import webdriver
|
|
|
|
|
from selenium.webdriver.firefox.options import Options
|
|
|
|
|
from selenium.common.exceptions import UnexpectedAlertPresentException
|
|
|
|
|
from selenium.webdriver.support import expected_conditions as EC
|
|
|
|
|
|
|
|
|
|
|
2019-04-30 19:19:00 -07:00
|
|
|
def init_browser():
|
|
|
|
|
global browser
|
|
|
|
|
options = Options()
|
|
|
|
|
options.add_argument('--headless')
|
|
|
|
|
browser = webdriver.Firefox(options=options)
|
2019-04-30 18:09:30 -07:00
|
|
|
|
2019-04-30 19:19:00 -07:00
|
|
|
|
|
|
|
|
def kill_browser():
|
2019-04-30 18:09:30 -07:00
|
|
|
if browser is not None:
|
|
|
|
|
browser.quit()
|
|
|
|
|
|
|
|
|
|
|
2019-04-30 19:19:00 -07:00
|
|
|
def browser_engine(response):
|
|
|
|
|
_write_response_to_file(response)
|
|
|
|
|
navigate_to('file://' + sys.path[0] + '/test.html')
|
2019-04-30 14:44:19 -07:00
|
|
|
os.remove('test.html')
|
|
|
|
|
popUp = False
|
|
|
|
|
actions = webdriver.ActionChains(browser)
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
actions.move_by_offset(2, 2)
|
|
|
|
|
actions.perform()
|
|
|
|
|
if EC.alert_is_present():
|
|
|
|
|
popUp = True
|
|
|
|
|
|
|
|
|
|
except UnexpectedAlertPresentException:
|
|
|
|
|
popUp = True
|
2019-04-30 18:09:30 -07:00
|
|
|
|
2019-04-30 14:44:19 -07:00
|
|
|
return popUp
|
2019-04-30 19:19:00 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def _write_response_to_file(response):
|
|
|
|
|
response = re.sub(r'<script.*?src=.*?>', '<script src=#>', response, re.I)
|
|
|
|
|
response = re.sub(r'href=.*?>', 'href=#>', response, re.I)
|
|
|
|
|
writer(response, 'test.html')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def navigate_to(uri):
|
|
|
|
|
if browser is None:
|
|
|
|
|
init_browser()
|
2019-05-01 10:09:41 -07:00
|
|
|
browser.get(uri)
|