Skip to content

Instantly share code, notes, and snippets.

@m1yag1
Last active July 16, 2019 20:35
Show Gist options
  • Save m1yag1/c7aecaee9bb7d5b1fc10f301d025f9b7 to your computer and use it in GitHub Desktop.
Save m1yag1/c7aecaee9bb7d5b1fc10f301d025f9b7 to your computer and use it in GitHub Desktop.
A script that will open two selenium browsers in order to compare two URLS. Accepts PASS and FAIL values and writes to csv
import csv
import os
import sys
from datetime import datetime
from selenium import webdriver
HERE = os.path.abspath(os.path.dirname(__file__))
def get_rows(filename):
with open(filename, 'r', encoding='ISO-8859-1') as csvfile:
datareader = csv.DictReader(csvfile)
for row in datareader:
yield {key: value for key, value in row.items()}
def to_csv(fieldnames, collection, filename, datestamp=True):
if datestamp:
filename = f"{filename}-{datetime.now().strftime('%Y%m%d')}.csv"
else:
filename = f"{filename}.csv"
print(f"Saving csv file to {filename}")
with open(filename, 'a') as outfile:
w = csv.DictWriter(outfile, fieldnames, dialect='excel')
w.writeheader()
for row in collection:
w.writerow(row)
def make_destination_folder(folder):
if not os.path.isdir(folder):
os.makedirs(folder)
def save_results(output_dir, filename, results, datestamp=True):
make_destination_folder(output_dir)
result_path = os.path.join(output_dir, filename)
fieldnames = results[0].keys()
to_csv(fieldnames, results, result_path, datestamp)
def close_browsers(driver1, driver2):
driver1.close()
driver2.close()
def get_user_response(prompt=">>> "):
response = input(f"--------------------------\n"
f"Do the pages look correct?\n\n"
f"Press 1 for Pass\n"
f"Press 2 for Fail\n"
f"Press 3 for Quit\n\n{prompt}")
return response
if __name__ == "__main__":
output_dir = os.path.join(HERE, "output")
result_file = os.path.join(output_dir, "test-results.csv")
input_file = "output/staging_results_with_match_data_before_fix-20190716v3.csv"
result_uuids = []
if os.path.exists(result_file):
result_uuids = [row["uuid"] for row in get_rows(result_file)]
test_data = [row for row in get_rows(input_file)]
result_data = []
for row in test_data:
if row["uuid"] in result_uuids:
continue
driver_uno = webdriver.Chrome()
driver_uno.set_window_position(0, 0)
driver_uno.maximize_window()
height = driver_uno.get_window_size()["height"]
width = driver_uno.get_window_size()["width"]
driver_uno.set_window_size(height, width / 2)
driver_dos = webdriver.Chrome()
driver_dos.set_window_position(width / 2, 0)
driver_dos.set_window_size(height, width / 2)
driver_uno.get(row["staging_webview_url"])
driver_dos.get(row["prod_webview_url"])
while True:
response = get_user_response()
if response == "1":
row["result"] = "PASS"
result_data.append(row)
close_browsers(driver_uno, driver_dos)
break
elif response == "2":
row["result"] = "FAIL"
result_data.append(row)
close_browsers(driver_uno, driver_dos)
break
elif response == "3":
close_browsers(driver_uno, driver_dos)
if result_data:
save_results(output_dir, "test-results", result_data, datestamp=False)
sys.exit()
else:
continue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment