Last active
July 16, 2019 20:35
-
-
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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