Skip to content
Snippets Groups Projects
Commit b1e87476 authored by Robin Carlsson's avatar Robin Carlsson
Browse files

19: added easyocr component for cookie rejection; wip

parent f899b2cc
No related branches found
No related tags found
No related merge requests found
...@@ -6,10 +6,12 @@ from selenium.webdriver.common.by import By ...@@ -6,10 +6,12 @@ from selenium.webdriver.common.by import By
from urllib.parse import urlparse, parse_qs from urllib.parse import urlparse, parse_qs
import pychrome import pychrome
import htmlreport import htmlreport
import pyautogui
import easyocr
from datetime import datetime from datetime import datetime
import os import os
import time import time
import json #import json
import sys import sys
import re import re
...@@ -117,7 +119,7 @@ def find_inputs(): ...@@ -117,7 +119,7 @@ def find_inputs():
try: try:
input_list.append(i) input_list.append(i)
except Exception as err: except Exception as err:
print(f"Error Message: {err.msg}") print(f"Error Message: {err}")
for d in driver.find_elements(By.TAG_NAME, "div"): for d in driver.find_elements(By.TAG_NAME, "div"):
# define recursive function for finding child input fields # define recursive function for finding child input fields
if is_search_related(d, "bar"): if is_search_related(d, "bar"):
...@@ -131,7 +133,7 @@ def find_inputs(): ...@@ -131,7 +133,7 @@ def find_inputs():
try: try:
input_list.append(child) input_list.append(child)
except Exception as err: except Exception as err:
print(f"Error Message: {err.msg}") print(f"Error Message: {err}")
find_child_from_div(d) find_child_from_div(d)
return input_list return input_list
...@@ -146,7 +148,7 @@ def find_buttons(): ...@@ -146,7 +148,7 @@ def find_buttons():
try: try:
button_list.append(e) button_list.append(e)
except Exception as err: except Exception as err:
print(f"Error Message: {err.msg}") print(f"Error Message: {err}")
for d in driver.find_elements(By.TAG_NAME, "div"): for d in driver.find_elements(By.TAG_NAME, "div"):
if is_search_related(d, "button"): if is_search_related(d, "button"):
# define recursive function for finding child button equivalents # define recursive function for finding child button equivalents
...@@ -159,7 +161,7 @@ def find_buttons(): ...@@ -159,7 +161,7 @@ def find_buttons():
try: try:
button_list.append(child) button_list.append(child)
except Exception as err: except Exception as err:
print(f"Error Message: {err.msg}") print(f"Error Message: {err}")
find_child_from_div(d) find_child_from_div(d)
return button_list return button_list
...@@ -192,7 +194,7 @@ def is_search_related(element, mode): ...@@ -192,7 +194,7 @@ def is_search_related(element, mode):
return False return False
return True return True
except Exception as err: except Exception as err:
print(f"Error Message: {err.msg}") print(f"Error Message: {err}")
...@@ -232,6 +234,7 @@ def get_interceptor_attrs(errormsg): ...@@ -232,6 +234,7 @@ def get_interceptor_attrs(errormsg):
print(err) print(err)
# use javascript execution to remove obstructing elements # use javascript execution to remove obstructing elements
def handle_interception(msg, button): def handle_interception(msg, button):
try: try:
...@@ -254,7 +257,27 @@ def handle_interception(msg, button): ...@@ -254,7 +257,27 @@ def handle_interception(msg, button):
input_search_term(inputs[0]) input_search_term(inputs[0])
except Exception as err: except Exception as err:
print("\033[91m \nFAILED TO DEAL WITH INTERCEPTOR\n\033[00m") print("\033[91m \nFAILED TO DEAL WITH INTERCEPTOR\n\033[00m")
print(err.msg) print(err)
# WORK-IN-PROGRESS
# use easyocr reject cookies, thus closing the obstructing window
def ocr_deny_cookies():
words_of_denial = ["reject", "deny", "hylkaa"]
reader = easyocr.Reader(["en"])
pyautogui.hotkey('ctrl', '1')
# full screenshot so the coordinates match
pyautogui.screenshot("./temp.jpg")
result = reader.readtext("./temp.jpg")
if ("cookie" in str(result).lower()) or ("evaste" in str(result).lower()):
for word in words_of_denial:
for (bbox, text, prob) in result:
if word in text.lower():
print(f"EasyOCR found: {word}")
pyautogui.click(bbox[0][0], bbox[0][1])
os.remove("./temp.jpg")
time.sleep(0.2)
...@@ -319,6 +342,9 @@ with open(sys.argv[1], encoding="utf-8") as pages_to_test: ...@@ -319,6 +342,9 @@ with open(sys.argv[1], encoding="utf-8") as pages_to_test:
time.sleep(3) time.sleep(3)
ocr_deny_cookies()
driver.get_screenshot_as_file(f"screenshots_{datestamp}/{log_title}.png") driver.get_screenshot_as_file(f"screenshots_{datestamp}/{log_title}.png")
# these might help avoiding certain elements getting in the way # these might help avoiding certain elements getting in the way
...@@ -353,9 +379,9 @@ with open(sys.argv[1], encoding="utf-8") as pages_to_test: ...@@ -353,9 +379,9 @@ with open(sys.argv[1], encoding="utf-8") as pages_to_test:
break break
except Exception as err: except Exception as err:
try: try:
print(f"Error Message: {err.msg}") print(f"Error Message: {err}")
# sue me lmao # sue me lmao
if "click intercepted" in err.msg: if "click intercepted" in str(err):
handle_interception(err.msg, b) handle_interception(err.msg, b)
except Exception as err: except Exception as err:
print(err) print(err)
...@@ -369,8 +395,8 @@ with open(sys.argv[1], encoding="utf-8") as pages_to_test: ...@@ -369,8 +395,8 @@ with open(sys.argv[1], encoding="utf-8") as pages_to_test:
break break
except Exception as err: except Exception as err:
try: try:
print(f"Error Message: {err.msg}") print(f"Error Message: {err}")
if "click intercepted" in err.msg: if "click intercepted" in str(err):
handle_interception(err.msg, b) handle_interception(err.msg, b)
except Exception as err: except Exception as err:
print(err) print(err)
...@@ -384,8 +410,8 @@ with open(sys.argv[1], encoding="utf-8") as pages_to_test: ...@@ -384,8 +410,8 @@ with open(sys.argv[1], encoding="utf-8") as pages_to_test:
break break
except Exception as err: except Exception as err:
try: try:
print(f"Error Message: {err.msg}") print(f"Error Message: {err}")
if "click intercepted" in err.msg: if "click intercepted" in str(err):
handle_interception(err.msg, b) handle_interception(err.msg, b)
except Exception as err: except Exception as err:
print(err) print(err)
...@@ -401,8 +427,8 @@ with open(sys.argv[1], encoding="utf-8") as pages_to_test: ...@@ -401,8 +427,8 @@ with open(sys.argv[1], encoding="utf-8") as pages_to_test:
break break
except Exception as err: except Exception as err:
try: try:
print(f"Error Message: {err.msg}") print(f"Error Message: {err}")
if "click intercepted" in err.msg: if "click intercepted" in str(err):
handle_interception(err.msg, b) handle_interception(err.msg, b)
except Exception as err: except Exception as err:
print(err) print(err)
...@@ -446,7 +472,7 @@ with open(sys.argv[1], encoding="utf-8") as pages_to_test: ...@@ -446,7 +472,7 @@ with open(sys.argv[1], encoding="utf-8") as pages_to_test:
# parameter_list = parse_qs(query_string) # parameter_list = parse_qs(query_string)
# event["message"]["params"]["request"]["query_string_parameters"] = parameter_list # event["message"]["params"]["request"]["query_string_parameters"] = parameter_list
# except Exception as err: # except Exception as err:
# print("Error Message: " + err.msg) # print("Error Message: " + err)
# # separate query string parameters into list in case of ExtraInfo # # separate query string parameters into list in case of ExtraInfo
# elif event["message"]["method"] == "Network.requestWillBeSentExtraInfo": # elif event["message"]["method"] == "Network.requestWillBeSentExtraInfo":
# try: # try:
...@@ -456,7 +482,7 @@ with open(sys.argv[1], encoding="utf-8") as pages_to_test: ...@@ -456,7 +482,7 @@ with open(sys.argv[1], encoding="utf-8") as pages_to_test:
# event["message"]["params"]["query_string_parameters"] = parameter_list # event["message"]["params"]["query_string_parameters"] = parameter_list
# except Exception as err: # except Exception as err:
# if ":path" not in str(err): # if ":path" not in str(err):
# print("Error Message: " + err.msg) # print("Error Message: " + err)
# # write events related to sent network requests # # write events related to sent network requests
# if ("Network.requestWillBeSent" in event["message"]["method"]): # if ("Network.requestWillBeSent" in event["message"]["method"]):
# f.write(json.dumps(event["message"], indent=4) + ",") # f.write(json.dumps(event["message"], indent=4) + ",")
......
t3.txt 0 → 100644
https://www.slideshare.net/
https://www.cookiebot.com/
https://www.google.nl
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment