diff --git a/BBL-Automated.ipynb b/BBL-Automated.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..a3373c20391732d4342bab745501c475fb92be96
--- /dev/null
+++ b/BBL-Automated.ipynb
@@ -0,0 +1,1868 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 88,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Requirement already satisfied: selenium in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (4.8.3)\n",
+      "Requirement already satisfied: trio~=0.17 in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from selenium) (0.22.0)\n",
+      "Requirement already satisfied: trio-websocket~=0.9 in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from selenium) (0.10.2)\n",
+      "Requirement already satisfied: certifi>=2021.10.8 in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from selenium) (2022.12.7)\n",
+      "Requirement already satisfied: urllib3[socks]~=1.26 in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from selenium) (1.26.14)\n",
+      "Requirement already satisfied: sniffio in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from trio~=0.17->selenium) (1.2.0)\n",
+      "Requirement already satisfied: attrs>=19.2.0 in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from trio~=0.17->selenium) (22.1.0)\n",
+      "Requirement already satisfied: exceptiongroup>=1.0.0rc9 in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from trio~=0.17->selenium) (1.1.1)\n",
+      "Requirement already satisfied: idna in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from trio~=0.17->selenium) (3.4)\n",
+      "Requirement already satisfied: outcome in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from trio~=0.17->selenium) (1.2.0)\n",
+      "Requirement already satisfied: async-generator>=1.9 in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from trio~=0.17->selenium) (1.10)\n",
+      "Requirement already satisfied: sortedcontainers in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from trio~=0.17->selenium) (2.4.0)\n",
+      "Requirement already satisfied: wsproto>=0.14 in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from trio-websocket~=0.9->selenium) (1.2.0)\n",
+      "Requirement already satisfied: PySocks!=1.5.7,<2.0,>=1.5.6 in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from urllib3[socks]~=1.26->selenium) (1.7.1)\n",
+      "Requirement already satisfied: h11<1,>=0.9.0 in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from wsproto>=0.14->trio-websocket~=0.9->selenium) (0.14.0)\n",
+      "Note: you may need to restart the kernel to use updated packages.\n"
+     ]
+    }
+   ],
+   "source": [
+    "pip install selenium"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 89,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Created by Yuvraj Sharma, edited and updated by Kyle Goetke\n",
+    "\n",
+    "# from selenium import webdriver\n",
+    "from datetime import datetime\n",
+    "import time\n",
+    "# import sys\n",
+    "from selenium.webdriver.support.ui import Select\n",
+    "from selenium.webdriver.support.ui import WebDriverWait\n",
+    "from selenium.webdriver.support import expected_conditions as EC\n",
+    "from selenium.webdriver.common.action_chains import ActionChains\n",
+    "from selenium.webdriver.common.by import By\n",
+    "from selenium.common.exceptions import NoSuchElementException, NoSuchWindowException, ElementClickInterceptedException, TimeoutException, StaleElementReferenceException\n",
+    "import tkinter as tk\n",
+    "import tkinter.font as tkfont"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 90,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def already_loggedIn(id):\n",
+    "    '''\n",
+    "    id: id of the element\n",
+    "    Returns whether the element exists, if it returns:\n",
+    "    True: We need to the loggin\n",
+    "    False: We don't need to login\n",
+    "    '''\n",
+    "    try:\n",
+    "        driver.find_element(By.ID, id)\n",
+    "    except NoSuchElementException:\n",
+    "        return False\n",
+    "    return True"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 91,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def login(url):\n",
+    "    '''\n",
+    "    username: Drexel username of the user\n",
+    "    password: Drexel password of the user\n",
+    "    URL: URL of the course\n",
+    "    Returns nothing, Just ask the webdriver to check whether user is already loggedin to the browser,\n",
+    "    if not it automates the process\n",
+    "    '''\n",
+    "    learn = driver.get(url)\n",
+    "        \n",
+    "    wait = WebDriverWait(driver, 10000000000000000)\n",
+    "    element = wait.until(EC.title_contains('Content'))\n",
+    "        \n",
+    "#         time.sleep(0.5)\n",
+    "#     else:\n",
+    "#         pass"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 92,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def new_home():\n",
+    "    '''\n",
+    "    Create a new home directory by defulat to avoid web links from becoming the\n",
+    "    home directory and breaking the script\n",
+    "    '''\n",
+    "\n",
+    "    now = datetime.now()\n",
+    "    current_time = now.strftime(\"%H%M%S\")\n",
+    "\n",
+    "    wait = WebDriverWait(driver, 2)\n",
+    "\n",
+    "    hoverElement = driver.find_element(By.ID, \"addCmItem\")\n",
+    "    hover = ActionChains(driver).move_to_element(hoverElement)\n",
+    "    hover.perform()\n",
+    "\n",
+    "    addElement = driver.find_element(By.ID, \"addContentAreaButton\")\n",
+    "    addElement.click()\n",
+    "    inputText = driver.find_element(By.ID, \"addContentAreaName\")\n",
+    "    inputText.send_keys(current_time)\n",
+    "\n",
+    "    checkBox = driver.find_element(By.ID, \"content_area_availability_ckbox\")\n",
+    "    checkBox.click()\n",
+    "\n",
+    "    addBlankPageForm = driver.find_element(By.ID, \"addContentAreaFormSubmit\")\n",
+    "    addBlankPageForm.click()\n",
+    "\n",
+    "    newHomeClick = driver.find_element(By.XPATH, \"//*[@title={}]\".format(current_time))\n",
+    "    newHomeClick.click()\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    bcHoverElement = driver.find_element(By.ID, \"bcMenu_actionButton\")\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    bcHover = ActionChains(driver).move_to_element(bcHoverElement)\n",
+    "    bcHover.perform()\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    item = driver.find_element(By.ID, \"content-handler-resource/x-bb-document\")\n",
+    "    item.click()\n",
+    "\n",
+    "    time.sleep(2)\n",
+    "    itemInputText = driver.find_element(By.ID, \"user_title\")\n",
+    "    itemInputText.send_keys(current_time, \" item\")\n",
+    "\n",
+    "    bottomSubmit = driver.find_element(By.ID, \"bottom_Submit\")\n",
+    "    bottomSubmit.click()\n",
+    "\n",
+    "    ''' ***Add a Blank Page***\n",
+    "    addElement = driver.find_element(By.ID, \"addBlankPageButton\")\n",
+    "    addElement.click()\n",
+    "\n",
+    "    inputText = driver.find_element(By.ID, \"addContentAreaName\")\n",
+    "    inputText.send_keys(\"t\")\n",
+    "\n",
+    "    checkBox = driver.find_element(By.ID, \"content_area_availability_ckbox\")\n",
+    "    checkBox.click()\n",
+    "\n",
+    "    addBlankPageForm = driver.find_element(By.ID, \"addBlankPageFormSubmit\")\n",
+    "    addBlankPageForm.click()\n",
+    "    '''\n",
+    "    # don't delete this break\n",
+    "    time.sleep(1)\n",
+    "\n",
+    "    SCROLL_PAUSE_TIME = 0.5\n",
+    "\n",
+    "    # Get scroll height\n",
+    "    last_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "\n",
+    "    expandCustomization = driver.find_element(By.XPATH, '//*[@title=\"Expand Customization\"]')\n",
+    "    expandCustomization.click()\n",
+    "\n",
+    "    teachingStyle = driver.find_element(By.XPATH, '//*[@title=\"Teaching Style\"]').click()\n",
+    "\n",
+    "    # don't delete this break\n",
+    "    time.sleep(1)\n",
+    "\n",
+    "    SCROLL_PAUSE_TIME = 0.5\n",
+    "\n",
+    "    # Get scroll height\n",
+    "    last_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "\n",
+    "    driver.implicitly_wait(2)\n",
+    "\n",
+    "    while True:\n",
+    "        # Scroll down to bottom\n",
+    "        driver.execute_script(\"window.scrollTo(0, 700);\")\n",
+    "\n",
+    "        # Wait to load page\n",
+    "        time.sleep(SCROLL_PAUSE_TIME)\n",
+    "\n",
+    "        # Calculate new scroll height and compare with last scroll height\n",
+    "        new_height = driver.execute_script(\"return 700\")\n",
+    "        if new_height == last_height:\n",
+    "            break\n",
+    "        last_height = new_height\n",
+    "\n",
+    "    # don't delete this break\n",
+    "    time.sleep(2)\n",
+    "    #dropDownNewHome = driver.find_element(By.XPATH, \"//select[@name='entryCourseTocIdStr']/option[text()={}\".format(current_time))\n",
+    "    dropDownNewHome = driver.find_element(By.XPATH, \"//select[@id='entryCourseTocIdStr']/option[text()={}]\".format(current_time))\n",
+    "    # find_element(By.XPATH, \"//select[@id='entryCourseTocIdStr']/option[text()='option_text']\").click()\n",
+    "    dropDownNewHome.click()\n",
+    "\n",
+    "    driver.find_element(By.ID, \"bottom_Submit\").click()\n",
+    "\n",
+    "    # don't delete this break\n",
+    "    time.sleep(2)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 93,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def exp_wait1(d):\n",
+    "#     wait.until(lambda d: d.find_element(By.XPATH, \"//a[@title = 'Delete' and contains(text(), 'Delete')]\")).click()\n",
+    "    while True:\n",
+    "        time.sleep(0.01)\n",
+    "        try:\n",
+    "            delete_b = d.find_element(By.XPATH, \"//a[@title = 'Delete' and contains(text(), 'Delete')]\")\n",
+    "            print(delete_b)\n",
+    "        except:\n",
+    "            delete_b = None\n",
+    "        if delete_b:\n",
+    "            delete_b.click()\n",
+    "            break\n",
+    "        else:\n",
+    "            d.find_element(By.XPATH, \"//img[contains(@alt, 'menu item options')]\").click()\n",
+    "    return\n",
+    "\n",
+    "def exp_wait2(d):\n",
+    "#     wait.until(lambda d: d.find_element(By.XPATH, \"//a[@title = 'Delete' and contains(text(), 'Delete')]\")).click()\n",
+    "    while True:\n",
+    "        time.sleep(0.01)\n",
+    "        try:\n",
+    "            clear_b = d.find_element(By.XPATH, \"//div[@class = 'container  clearfix']/div[2]/a\")\n",
+    "        except:\n",
+    "            clear_b = None\n",
+    "        if clear_b:\n",
+    "            clear_b.click()\n",
+    "            break\n",
+    "        else:\n",
+    "            exp_wait1(d)\n",
+    "    return\n",
+    "        "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 94,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def deleteNavigationpanel():\n",
+    "    '''\n",
+    "    Functions go through the left navigation panel of the course, and delete everything one by one\n",
+    "    Returns nothing\n",
+    "    '''\n",
+    "    #Switches the frame to the current frame in the webpage\n",
+    "    ##element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, \"iframe[name='classic-learn-iframe']\")))\n",
+    "    ##iframe = driver.find_element_by_css_selector(\"iframe[name='classic-learn-iframe']\")\n",
+    "    ##driver.switch_to.frame(iframe)\n",
+    "    count=-1\n",
+    "    while True:\n",
+    "        try:\n",
+    "            if count==1:\n",
+    "                print('done nav')\n",
+    "                addToolKit()\n",
+    "                break\n",
+    "            wait = WebDriverWait(driver, 3)\n",
+    "            print('ok1')\n",
+    "#             wait.until(EC.presence_of_element_located((By.XPATH, \"//a[contains(@class, 'cmimg editmode jsInit')]\"))).click()\n",
+    "            test = wait.until(lambda d: d.find_element(By.XPATH, \"//img[contains(@alt, 'menu item options')]\"))\n",
+    "            print('ok2')\n",
+    "            \n",
+    "            \n",
+    "#             print(test)\n",
+    "\n",
+    "            test.click()\n",
+    "\n",
+    "            exp_wait1(driver)\n",
+    "\n",
+    "            exp_wait2(driver)\n",
+    "            \n",
+    "            print('ok_del')\n",
+    "\n",
+    "            wait.until(lambda d: d.find_element(By.XPATH, \"//a[@class = 'genericButton' and contains(text(), 'Delete')]\")).click()\n",
+    "            \n",
+    "            count = len(driver.find_elements(By.XPATH, \"//img[contains(@alt, 'menu item options')]\"))\n",
+    "            \n",
+    "            print(count)\n",
+    "\n",
+    "#             print(courseContent)\n",
+    "            \n",
+    "#             print((wait.until(lambda d: d.find_elements(By.XPATH, \"//a[contains(@class, 'cmimg editmode jsInit')]\")))) \n",
+    "#             print('len = ',len(wait.until(lambda d: d.find_elements(By.XPATH, \"//a[contains(@class, 'cmimg editmode jsInit')]\"))))\n",
+    "#             if len(wait.until(lambda d: d.find_elements(By.XPATH, \"//a[contains(@class, 'cmimg editmode jsInit')]\"))) == 0: #checks if this is the last thing in the navigation panel\n",
+    "# #                 print(courseContent)\n",
+    "#                 break\n",
+    "        except:\n",
+    "#             print('error')\n",
+    "            pass\n",
+    "#             driver.refresh()\n",
+    "#             time.sleep(1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 95,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def addToolKit():\n",
+    "    #add = driver.find_element(By.XPATH, \"//li[@id = 'addCmItem']/a\")\n",
+    "    add = driver.find_element(By.ID, 'addCmItem')\n",
+    "    add.click()\n",
+    "\n",
+    "    tool = driver.find_element(By.ID, 'addToolLinkButton')\n",
+    "    tool.click()\n",
+    "\n",
+    "    toolName = driver.find_element(By.ID, 'addToolLinkName')\n",
+    "    toolName.send_keys('to')\n",
+    "\n",
+    "    toolType = Select(driver.find_element(By.ID, \"toolSelect\"))\n",
+    "    toolType.select_by_value('course_tools_area')\n",
+    "\n",
+    "    toolSubmit = driver.find_element(By.ID, 'addToolLinkFormSubmit')\n",
+    "    toolSubmit.click()\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "\n",
+    "    # toolContentShow = driver.find_elements_by_xpath(\"//a[contains(@class, 'cmimg editmode')]\")\n",
+    "    toolContentShow = driver.find_elements(By.XPATH, \"//a[contains(@class, 'cmimg editmode')]\")\n",
+    "    i = toolContentShow[0]\n",
+    "\n",
+    "    i.click()\n",
+    "    toolContentShowButton = driver.find_element(By.XPATH, \"//a[@title = 'Change visibility of link' and contains(text(), 'Show Link')]\")\n",
+    "    toolContentShowButton.click()\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 96,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# def deleteAnnouncements():\n",
+    "\n",
+    "#     wait = WebDriverWait(driver, 1)\n",
+    "    \n",
+    "#     driver.find_element(By.XPATH, \"//span[contains(@title, 'to')]\").click()\n",
+    "#     time.sleep(1)\n",
+    "    \n",
+    "\n",
+    "#     driver.find_element(By.LINK_TEXT, \"Announcements\").click()\n",
+    "\n",
+    "#     while True:\n",
+    "#         #don't delete this break\n",
+    "#         # time.sleep(11111)\n",
+    "#         time.sleep(0.5)\n",
+    "#         try:\n",
+    "#             wait = WebDriverWait(driver, 10000000000000000)\n",
+    "# #             wait.until(click_fmo123)\n",
+    "#             wait.until(lambda d: d.find_element(By.XPATH, '//*[@title=\"Click for more options\"]')).click()\n",
+    "# #             courseContent = \n",
+    "\n",
+    "#             time.sleep(0.5)\n",
+    "\n",
+    "# #             courseContent.click()\n",
+    "# #             time.sleep(0.5)\n",
+    "# #             wait.until(delete_123)\n",
+    "#             wait.until(lambda d: d.find_element(By.XPATH, \"//a[@title = 'Delete' and contains(text(), 'Delete')]\")).click()\n",
+    "# #             delete = \n",
+    "# #             time.sleep(0.5)\n",
+    "# #             delete.click()\n",
+    "\n",
+    "#             WebDriverWait(driver, 1).until(EC.alert_is_present())\n",
+    "#             driver.switch_to.alert.accept()\n",
+    "\n",
+    "#         except NoSuchElementException as g:\n",
+    "#             break\n",
+    "\n",
+    "#     expandCustomization = driver.find_element(By.XPATH, '//*[@title=\"to\"]')\n",
+    "#     expandCustomization.click()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 97,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def deleteAnnouncements():\n",
+    "\n",
+    "    wait = WebDriverWait(driver, 1)\n",
+    "    time.sleep(1)\n",
+    "    \n",
+    "#     wait = WebDriverWait(driver, 1)\n",
+    "    \n",
+    "    driver.find_element(By.XPATH, \"//span[contains(@title, 'to')]\").click()\n",
+    "#     time.sleep(1)\n",
+    "\n",
+    "    driver.find_element(By.LINK_TEXT, \"Announcements\").click()\n",
+    "\n",
+    "    while True:\n",
+    "        #don't delete this break\n",
+    "        # time.sleep(11111)\n",
+    "        time.sleep(0.5)\n",
+    "        try:\n",
+    "            courseContent = driver.find_element(By.XPATH, '//*[@title=\"Click for more options\"]')\n",
+    "            time.sleep(0.5)\n",
+    "            courseContent.click()\n",
+    "            time.sleep(0.5)\n",
+    "            delete = driver.find_element(By.XPATH, \"//a[@title = 'Delete' and contains(text(), 'Delete')]\")\n",
+    "            time.sleep(0.5)\n",
+    "            delete.click()\n",
+    "\n",
+    "            WebDriverWait(driver, 1).until(EC.alert_is_present())\n",
+    "            driver.switch_to.alert.accept()\n",
+    "\n",
+    "        except NoSuchElementException as g:\n",
+    "            break\n",
+    "\n",
+    "    expandCustomization = driver.find_element(By.XPATH, '//*[@title=\"to\"]')\n",
+    "    expandCustomization.click()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 98,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def deleteContacts():\n",
+    "\n",
+    "    wait = WebDriverWait(driver, 1)\n",
+    "    time.sleep(1)\n",
+    "\n",
+    "    driver.find_element(By.LINK_TEXT, \"Contacts\").click()\n",
+    "\n",
+    "    while True:\n",
+    "        #don't delete this break\n",
+    "        time.sleep(0.5)\n",
+    "        try:\n",
+    "            courseContent = driver.find_element(By.XPATH, '//*[@title=\"Click for more options\"]')\n",
+    "            time.sleep(0.5)\n",
+    "            courseContent.click()\n",
+    "            time.sleep(0.5)\n",
+    "            delete = driver.find_element(By.XPATH, \"//a[@title = 'Delete' and contains(text(), 'Delete')]\")\n",
+    "            time.sleep(0.5)\n",
+    "            delete.click()\n",
+    "\n",
+    "            WebDriverWait(driver, 1).until(EC.alert_is_present())\n",
+    "            driver.switch_to.alert.accept()\n",
+    "\n",
+    "        except NoSuchElementException as g:\n",
+    "            break\n",
+    "\n",
+    "    expandCustomization = driver.find_element(By.XPATH, '//*[@title=\"to\"]')\n",
+    "    expandCustomization.click()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 99,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def deleteBlogs():\n",
+    "\n",
+    "    wait = WebDriverWait(driver, 1)\n",
+    "    time.sleep(1)\n",
+    "\n",
+    "    driver.find_element(By.LINK_TEXT, \"Blogs\").click()\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    SCROLL_PAUSE_TIME = 0.5\n",
+    "\n",
+    "    # Get scroll height\n",
+    "    last_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "\n",
+    "    while True:\n",
+    "        # Scroll down to bottom\n",
+    "        driver.execute_script(\"window.scrollTo(0, document.body.scrollHeight);\")\n",
+    "\n",
+    "        # Wait to load page\n",
+    "        time.sleep(SCROLL_PAUSE_TIME)\n",
+    "\n",
+    "        # Calculate new scroll height and compare with last scroll height\n",
+    "        new_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "        if new_height == last_height:\n",
+    "            break\n",
+    "        last_height = new_height\n",
+    "\n",
+    "    try:\n",
+    "        driver.find_element(By.ID, 'listContainer_showAllButton').click()\n",
+    "        time.sleep(0.5)\n",
+    "        driver.find_element(By.ID, 'listContainer_selectAll').click()\n",
+    "\n",
+    "        #delete = driver.find_element(By.XPATH, \"//*[contains(text(), 'Delete')]\")\n",
+    "        driver.find_element(By.XPATH, \"//*[text()='Delete']\").click()\n",
+    "\n",
+    "        WebDriverWait(driver, 1).until(EC.alert_is_present())\n",
+    "        driver.switch_to.alert.accept()\n",
+    "\n",
+    "        time.sleep(0.5)\n",
+    "\n",
+    "        driver.find_element(By.ID, 'listContainer_selectAll').click()\n",
+    "        driver.find_element(By.NAME, 'bottom_Remove').click()\n",
+    "    except NoSuchElementException as g:\n",
+    "        pass\n",
+    "\n",
+    "    expandCustomization = driver.find_element(By.XPATH, '//*[@title=\"to\"]')\n",
+    "    expandCustomization.click()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 100,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def deleteGlossary():\n",
+    "    wait = WebDriverWait(driver, 1)\n",
+    "    time.sleep(1)\n",
+    "\n",
+    "    driver.find_element(By.LINK_TEXT, \"Glossary\").click()\n",
+    "\n",
+    "    while True:\n",
+    "        #don't delete this break\n",
+    "        time.sleep(0.5)\n",
+    "        try:\n",
+    "            courseContent = driver.find_element(By.XPATH, '//*[@title=\"Click for more options\"]')\n",
+    "            time.sleep(0.5)\n",
+    "            courseContent.click()\n",
+    "            time.sleep(0.5)\n",
+    "            delete = driver.find_element(By.XPATH, \"//a[@title = 'Delete' and contains(text(), 'Delete')]\")\n",
+    "            time.sleep(0.5)\n",
+    "            delete.click()\n",
+    "\n",
+    "            WebDriverWait(driver, 1).until(EC.alert_is_present())\n",
+    "            driver.switch_to.alert.accept()\n",
+    "\n",
+    "        except NoSuchElementException as g:\n",
+    "            break\n",
+    "\n",
+    "    expandCustomization = driver.find_element(By.XPATH, '//*[@title=\"to\"]')\n",
+    "    expandCustomization.click()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 101,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def deleteGroups():\n",
+    "\n",
+    "    wait = WebDriverWait(driver, 1)\n",
+    "    time.sleep(1)\n",
+    "\n",
+    "    driver.find_element(By.LINK_TEXT, \"Groups\").click()\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    SCROLL_PAUSE_TIME = 0.5\n",
+    "\n",
+    "    # Get scroll height\n",
+    "    last_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "\n",
+    "    while True:\n",
+    "        # Scroll down to bottom\n",
+    "        driver.execute_script(\"window.scrollTo(0, document.body.scrollHeight);\")\n",
+    "\n",
+    "        # Wait to load page\n",
+    "        time.sleep(SCROLL_PAUSE_TIME)\n",
+    "\n",
+    "        # Calculate new scroll height and compare with last scroll height\n",
+    "        new_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "        if new_height == last_height:\n",
+    "            break\n",
+    "        last_height = new_height\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    try:\n",
+    "        driver.find_element(By.ID, 'listContainer_showAllButton').click()\n",
+    "        time.sleep(0.5)\n",
+    "\n",
+    "        driver.find_element(By.ID, 'listContainer_selectAll').click()\n",
+    "\n",
+    "        time.sleep(0.5)\n",
+    "\n",
+    "        driver.find_element(By.XPATH, \"//*[text()='Bulk Actions ']\").click()\n",
+    "\n",
+    "        time.sleep(0.5)\n",
+    "\n",
+    "        driver.find_element(By.XPATH, \"//*[text()='Delete Group']\").click()\n",
+    "\n",
+    "        WebDriverWait(driver, 1).until(EC.alert_is_present())\n",
+    "        driver.switch_to.alert.accept()\n",
+    "    except NoSuchElementException as g:\n",
+    "        pass\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    expandCustomization = driver.find_element(By.XPATH, '//*[@title=\"to\"]')\n",
+    "    expandCustomization.click()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 102,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def deleteJournals():\n",
+    "\n",
+    "    wait = WebDriverWait(driver, 1)\n",
+    "    time.sleep(1)\n",
+    "\n",
+    "    driver.find_element(By.LINK_TEXT, \"Journals\").click()\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    SCROLL_PAUSE_TIME = 0.5\n",
+    "\n",
+    "    # Get scroll height\n",
+    "    last_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "\n",
+    "    while True:\n",
+    "        # Scroll down to bottom\n",
+    "        driver.execute_script(\"window.scrollTo(0, document.body.scrollHeight);\")\n",
+    "\n",
+    "        # Wait to load page\n",
+    "        time.sleep(SCROLL_PAUSE_TIME)\n",
+    "\n",
+    "        # Calculate new scroll height and compare with last scroll height\n",
+    "        new_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "        if new_height == last_height:\n",
+    "            break\n",
+    "        last_height = new_height\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    try:\n",
+    "        driver.find_element(By.ID, 'listContainer_showAllButton').click()\n",
+    "        time.sleep(0.5)\n",
+    "        driver.find_element(By.ID, 'listContainer_selectAll').click()\n",
+    "\n",
+    "        #delete = driver.find_element(By.XPATH, \"//*[contains(text(), 'Delete')]\")\n",
+    "        time.sleep(0.5)\n",
+    "        driver.find_element(By.XPATH, \"//*[text()='Delete']\").click()\n",
+    "\n",
+    "        WebDriverWait(driver, 2).until(EC.alert_is_present())\n",
+    "        driver.switch_to.alert.accept()\n",
+    "        time.sleep(0.5)\n",
+    "\n",
+    "        driver.find_element(By.ID, 'listContainer_selectAll').click()\n",
+    "        driver.find_element(By.NAME, 'bottom_Remove').click()\n",
+    "    except NoSuchElementException as g:\n",
+    "        pass\n",
+    "\n",
+    "    expandCustomization = driver.find_element(By.XPATH, '//*[@title=\"to\"]')\n",
+    "    expandCustomization.click()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 103,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def deleteTasks():\n",
+    "    wait = WebDriverWait(driver, 1)\n",
+    "    time.sleep(1)\n",
+    "\n",
+    "    driver.find_element(By.LINK_TEXT, \"Tasks\").click()\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    SCROLL_PAUSE_TIME = 0.5\n",
+    "\n",
+    "    # Get scroll height\n",
+    "    last_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "\n",
+    "    while True:\n",
+    "        # Scroll down to bottom\n",
+    "        driver.execute_script(\"window.scrollTo(0, document.body.scrollHeight);\")\n",
+    "\n",
+    "        # Wait to load page\n",
+    "        time.sleep(SCROLL_PAUSE_TIME)\n",
+    "\n",
+    "        # Calculate new scroll height and compare with last scroll height\n",
+    "        new_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "        if new_height == last_height:\n",
+    "            break\n",
+    "        last_height = new_height\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    try:\n",
+    "        driver.find_element(By.ID, 'listContainer_showAllButton').click()\n",
+    "        time.sleep(0.5)\n",
+    "        driver.find_element(By.ID, 'listContainer_selectAll').click()\n",
+    "        time.sleep(0.5)\n",
+    "        #delete = driver.find_element(By.XPATH, \"//*[contains(text(), 'Delete')]\")\n",
+    "        driver.find_element(By.XPATH, \"//*[text()='Delete']\").click()\n",
+    "\n",
+    "        WebDriverWait(driver, 2).until(EC.alert_is_present())\n",
+    "        driver.switch_to.alert.accept()\n",
+    "\n",
+    "    except NoSuchElementException as g:\n",
+    "        pass\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    expandCustomization = driver.find_element(By.XPATH, '//*[@title=\"to\"]')\n",
+    "    expandCustomization.click()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 104,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def deleteWikis():\n",
+    "    wait = WebDriverWait(driver, 1)\n",
+    "    time.sleep(1)\n",
+    "\n",
+    "    driver.find_element(By.LINK_TEXT, \"Wikis\").click()\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    SCROLL_PAUSE_TIME = 0.5\n",
+    "\n",
+    "    # Get scroll height\n",
+    "    last_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "\n",
+    "    while True:\n",
+    "        # Scroll down to bottom\n",
+    "        driver.execute_script(\"window.scrollTo(0, document.body.scrollHeight);\")\n",
+    "\n",
+    "        # Wait to load page\n",
+    "        time.sleep(SCROLL_PAUSE_TIME)\n",
+    "\n",
+    "        # Calculate new scroll height and compare with last scroll height\n",
+    "        new_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "        if new_height == last_height:\n",
+    "            break\n",
+    "        last_height = new_height\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    try:\n",
+    "        driver.find_element(By.ID, 'listContainer_showAllButton').click()\n",
+    "        time.sleep(0.5)\n",
+    "        driver.find_element(By.ID, 'listContainer_selectAll').click()\n",
+    "        time.sleep(0.5)\n",
+    "        #delete = driver.find_element(By.XPATH, \"//*[contains(text(), 'Delete')]\")\n",
+    "        driver.find_element(By.XPATH, \"//*[text()='Delete']\").click()\n",
+    "\n",
+    "        WebDriverWait(driver, 2).until(EC.alert_is_present())\n",
+    "        driver.switch_to.alert.accept()\n",
+    "\n",
+    "        time.sleep(0.5)\n",
+    "\n",
+    "        driver.find_element(By.ID, 'listContainer_selectAll').click()\n",
+    "        driver.find_element(By.NAME, 'bottom_Remove').click()\n",
+    "    except NoSuchElementException as g:\n",
+    "        pass\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    expandCustomization = driver.find_element(By.XPATH, '//*[@title=\"to\"]')\n",
+    "    expandCustomization.click()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 105,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def deleteDiscussionboards():\n",
+    "\n",
+    "    driver.find_element(By.LINK_TEXT, \"Discussion Board\").click()\n",
+    "\n",
+    "    wait = WebDriverWait(driver, 1)\n",
+    "    time.sleep(5)\n",
+    "\n",
+    "    try:\n",
+    "        driver.find_element(By.XPATH, \"//input[@id='bottom_Cancel']\").click()\n",
+    "    except NoSuchElementException as g:\n",
+    "        pass\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    SCROLL_PAUSE_TIME = 0.5\n",
+    "\n",
+    "    # Get scroll height\n",
+    "    last_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "\n",
+    "    while True:\n",
+    "        # Scroll down to bottom\n",
+    "        driver.execute_script(\"window.scrollTo(0, document.body.scrollHeight);\")\n",
+    "\n",
+    "        # Wait to load page\n",
+    "        time.sleep(SCROLL_PAUSE_TIME)\n",
+    "\n",
+    "        # Calculate new scroll height and compare with last scroll height\n",
+    "        new_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "        if new_height == last_height:\n",
+    "            break\n",
+    "        last_height = new_height\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "\n",
+    "    try:\n",
+    "        driver.find_element(By.ID, 'listContainer_showAllButton').click()\n",
+    "        time.sleep(0.5)\n",
+    "#         driver.find_element(By.XPATH, \"//a[@title='Close']\").click()\n",
+    "        driver.find_element(By.XPATH, \"//input[@id='bottom_Cancel']\").click()\n",
+    "    except NoSuchElementException as g:\n",
+    "        pass\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    try:\n",
+    "        driver.find_element(By.ID, 'listContainer_selectAll').click()\n",
+    "\n",
+    "        #delete = driver.find_element(By.XPATH, \"//*[contains(text(), 'Delete')]\")\n",
+    "        driver.find_element(By.XPATH, \"//*[text()='Delete']\").click()\n",
+    "\n",
+    "        WebDriverWait(driver, 2).until(EC.alert_is_present())\n",
+    "        driver.switch_to.alert.accept()\n",
+    "\n",
+    "        time.sleep(0.5)\n",
+    "\n",
+    "        driver.find_element(By.ID, 'listContainer_selectAll').click()\n",
+    "        driver.find_element(By.NAME, 'bottom_Remove').click()\n",
+    "    except NoSuchElementException as g:\n",
+    "        pass\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    expandCustomization = driver.find_element(By.XPATH, '//*[@title=\"to\"]')\n",
+    "    expandCustomization.click()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 106,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def deleteRubrics():\n",
+    "    expandCustomization = driver.find_element(By.XPATH, '//*[@title=\"Expand Course Tools\"]')\n",
+    "    expandCustomization.click()\n",
+    "\n",
+    "    teachingStyle = driver.find_element(By.XPATH, '//*[@title=\"Rubrics\"]').click()\n",
+    "\n",
+    "    wait = WebDriverWait(driver, 1)\n",
+    "    time.sleep(1)\n",
+    "    SCROLL_PAUSE_TIME = 0.5\n",
+    "\n",
+    "    # Get scroll height\n",
+    "    last_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "\n",
+    "    while True:\n",
+    "        # Scroll down to bottom\n",
+    "        driver.execute_script(\"window.scrollTo(0, document.body.scrollHeight);\")\n",
+    "\n",
+    "        # Wait to load page\n",
+    "        time.sleep(SCROLL_PAUSE_TIME)\n",
+    "\n",
+    "        # Calculate new scroll height and compare with last scroll height\n",
+    "        new_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "        if new_height == last_height:\n",
+    "            break\n",
+    "        last_height = new_height\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    try:\n",
+    "        driver.find_element(By.ID, 'rubric_listContainer_showAllButton').click()\n",
+    "        time.sleep(0.5)\n",
+    "        driver.find_element(By.ID, 'rubric_listContainer_selectAll').click()\n",
+    "        time.sleep(0.5)\n",
+    "        #delete = driver.find_element(By.XPATH, \"//*[contains(text(), 'Delete')]\")\n",
+    "        driver.find_element(By.XPATH, \"//*[text()='Delete']\").click()\n",
+    "\n",
+    "        WebDriverWait(driver, 2).until(EC.alert_is_present())\n",
+    "        driver.switch_to.alert.accept()\n",
+    "\n",
+    "    except NoSuchElementException as g:\n",
+    "        pass\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    expandCustomization = driver.find_element(By.XPATH, '//*[@title=\"to\"]')\n",
+    "    expandCustomization.click()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 107,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def deleteTestsSurveysPools(TSP):\n",
+    "    expandCustomization = driver.find_element(By.XPATH, '//*[@title=\"Expand Course Tools\"]')\n",
+    "    expandCustomization.click()\n",
+    "    \n",
+    "    time.sleep(5)\n",
+    "    \n",
+    "    teachingStyle = driver.find_element(By.XPATH, '//*[@title=\"Tests, Surveys, and Pools\"]').click()\n",
+    "    time.sleep(2)\n",
+    "\n",
+    "    driver.find_element(By.LINK_TEXT, TSP).click()\n",
+    "\n",
+    "    wait = WebDriverWait(driver, 1)\n",
+    "    time.sleep(1)\n",
+    "    SCROLL_PAUSE_TIME = 1\n",
+    "\n",
+    "    # Get scroll height\n",
+    "    last_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "\n",
+    "    while True:\n",
+    "        # Scroll down to bottom\n",
+    "        driver.execute_script(\"window.scrollTo(0, document.body.scrollHeight);\")\n",
+    "\n",
+    "        # Wait to load page\n",
+    "        time.sleep(SCROLL_PAUSE_TIME)\n",
+    "\n",
+    "        # Calculate new scroll height and compare with last scroll height\n",
+    "        new_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "        if new_height == last_height:\n",
+    "            break\n",
+    "        last_height = new_height\n",
+    "\n",
+    "    try:\n",
+    "        driver.find_element(By.ID, 'assessmentManager_listContainer_showAllButton').click()\n",
+    "    except NoSuchElementException as g:\n",
+    "        pass\n",
+    "\n",
+    "\n",
+    "    #don't delete this break\n",
+    "    time.sleep(1)\n",
+    "\n",
+    "    SCROLL_PAUSE_TIME = 1\n",
+    "\n",
+    "    # Get scroll height\n",
+    "    last_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "\n",
+    "    driver.implicitly_wait(1)\n",
+    "\n",
+    "    while True:\n",
+    "        # Scroll down to bottom\n",
+    "        driver.execute_script(\"window.scrollTo(0, 0);\")\n",
+    "\n",
+    "        # Wait to load page\n",
+    "        time.sleep(SCROLL_PAUSE_TIME)\n",
+    "\n",
+    "        # Calculate new scroll height and compare with last scroll height\n",
+    "        new_height = driver.execute_script(\"return 0\")\n",
+    "        if new_height == last_height:\n",
+    "            break\n",
+    "        last_height = new_height\n",
+    "\n",
+    "\n",
+    "    while True:\n",
+    "        #don't delete this break\n",
+    "        time.sleep(1)\n",
+    "        try:\n",
+    "            courseContent = driver.find_element(By.XPATH, '//*[@class=\"cmimg editmode jsInit  \"]')\n",
+    "            time.sleep(1)\n",
+    "            #courseContent.click()\n",
+    "            delTestClickAttempts = 0\n",
+    "            try:\n",
+    "                courseContent.click()\n",
+    "            except (StaleElementReferenceException) as e:\n",
+    "                time.sleep(1)\n",
+    "                if delTestClickAttempts < 80:\n",
+    "                    delTestClickAttempts = delTestClickAttempts + 1\n",
+    "                else:\n",
+    "                    time.sleep(3)\n",
+    "                    courseContent.click()\n",
+    "\n",
+    "            time.sleep(1)\n",
+    "            delete = driver.find_element(By.XPATH, \"//a[@title = 'Delete' and contains(text(), 'Delete')]\")\n",
+    "            time.sleep(1)\n",
+    "            delete.click()\n",
+    "\n",
+    "            WebDriverWait(driver, 2).until(EC.alert_is_present())\n",
+    "            driver.switch_to.alert.accept()\n",
+    "\n",
+    "        except NoSuchElementException as g:\n",
+    "            break\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    expandCustomization = driver.find_element(By.XPATH, '//*[@title=\"to\"]')\n",
+    "    expandCustomization.click()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 108,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def deleteGradeCenter():\n",
+    "    ##### Not working right now :(\n",
+    "    expandCustomization = driver.find_element(By.XPATH, '//*[@title=\"Expand Grade Center\"]')\n",
+    "    expandCustomization.click()\n",
+    "\n",
+    "    teachingStyle = driver.find_element(By.XPATH, '//*[@title=\"Full Grade Center\"]').click()\n",
+    "\n",
+    "    driver.find_element(By.XPATH, \"//*[text()='Manage ']\").click()\n",
+    "    driver.find_element(By.XPATH, \"//*[text()='Column Organization']\").click()\n",
+    "\n",
+    "\n",
+    "    #courseContent = driver.find_elements_by_xpath(\"//a[contains(@class, 'layoutCheckBox')]\")\n",
+    "    #i = courseContent[0]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 109,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def deleteContentCollection():\n",
+    "    expandCustomization = driver.find_element(By.XPATH, '//*[@title=\"Expand Content Collection\"]')\n",
+    "    expandCustomization.click()\n",
+    "    driver.find_element(By.XPATH, '//*[@class=\"favorite\"]').click()\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    SCROLL_PAUSE_TIME = 0.5\n",
+    "\n",
+    "    # Get scroll height\n",
+    "    last_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "\n",
+    "    while True:\n",
+    "        # Scroll down to bottom\n",
+    "        driver.execute_script(\"window.scrollTo(0, document.body.scrollHeight);\")\n",
+    "\n",
+    "        # Wait to load page\n",
+    "        time.sleep(SCROLL_PAUSE_TIME)\n",
+    "\n",
+    "        # Calculate new scroll height and compare with last scroll height\n",
+    "        new_height = driver.execute_script(\"return document.body.scrollHeight\")\n",
+    "        if new_height == last_height:\n",
+    "            break\n",
+    "        last_height = new_height\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    try:\n",
+    "        driver.find_element(By.ID, 'listContainer_showAllButton').click()\n",
+    "        time.sleep(1)\n",
+    "        driver.find_element(By.ID, 'listContainer_selectAll').click()\n",
+    "        time.sleep(1)\n",
+    "        #delete = driver.find_element(By.XPATH, \"//*[contains(text(), 'Delete')]\")\n",
+    "        driver.find_element(By.XPATH, \"//*[text()='Delete']\").click()\n",
+    "\n",
+    "        WebDriverWait(driver, 1).until(EC.alert_is_present())\n",
+    "        driver.switch_to.alert.accept()\n",
+    "\n",
+    "        time.sleep(1)\n",
+    "        driver.find_element(By.NAME, 'bottom_Submit').click()\n",
+    "\n",
+    "    except NoSuchElementException as g:\n",
+    "        pass\n",
+    "\n",
+    "    time.sleep(1)\n",
+    "    expandCustomization = driver.find_element(By.XPATH, '//*[@title=\"to\"]')\n",
+    "    expandCustomization.click()\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 110,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Requirement already satisfied: webdriver_manager in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (3.8.5)\r\n",
+      "Requirement already satisfied: tqdm in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from webdriver_manager) (4.64.1)\r\n",
+      "Requirement already satisfied: python-dotenv in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from webdriver_manager) (1.0.0)\r\n",
+      "Requirement already satisfied: packaging in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from webdriver_manager) (22.0)\r\n",
+      "Requirement already satisfied: requests in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from webdriver_manager) (2.28.1)\r\n",
+      "Requirement already satisfied: certifi>=2017.4.17 in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from requests->webdriver_manager) (2022.12.7)\r\n",
+      "Requirement already satisfied: idna<4,>=2.5 in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from requests->webdriver_manager) (3.4)\r\n",
+      "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from requests->webdriver_manager) (1.26.14)\r\n",
+      "Requirement already satisfied: charset-normalizer<3,>=2 in /Users/icommonscrc/anaconda3/lib/python3.10/site-packages (from requests->webdriver_manager) (2.0.4)\r\n"
+     ]
+    }
+   ],
+   "source": [
+    "!pip install webdriver_manager"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 111,
+   "metadata": {
+    "scrolled": true
+   },
+   "outputs": [],
+   "source": [
+    "#Just make sure this file is in the same folder as chromedriver, no need to update path now, it's not absolute anymore\n",
+    "from selenium import webdriver\n",
+    "from selenium.webdriver.chrome.service import Service\n",
+    "from webdriver_manager.chrome import ChromeDriverManager\n",
+    "driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))\n",
+    "driver.maximize_window()\n",
+    "driver.get(\"https://www.google.com\")\n",
+    "# driver = webdriver.Chrome('./chromedriver-5')\n",
+    "driver.implicitly_wait(2) # seconds\n",
+    "\n",
+    "#Enter the URL of the course\n",
+    "# url = \"https://learn.dcollege.net/ultra/courses/_288445_1/cl/outline\"\n",
+    "url = \"https://learn.dcollege.net/ultra/courses/_118298_1/cl/outline\"\n",
+    "\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 112,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "flag=0"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 113,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import tkinter as tk\n",
+    "import tkinter.font as tkfont\n",
+    "\n",
+    "def alert_message():\n",
+    "\n",
+    "    def yes_action():\n",
+    "        print(\"Yes button clicked\")\n",
+    "        global flag\n",
+    "        flag=1\n",
+    "        root.destroy()\n",
+    "\n",
+    "    def no_action():\n",
+    "        print(\"No button clicked\")\n",
+    "        root.destroy()\n",
+    "\n",
+    "    # Create the main window\n",
+    "    root = tk.Tk()\n",
+    "    root.title(\"Custom Alert\")\n",
+    "\n",
+    "    # Set the background color of the main window to light yellow\n",
+    "    root.configure(bg=\"#FFFF99\")\n",
+    "\n",
+    "    # Remove the window header\n",
+    "#     root.overrideredirect(True)\n",
+    "\n",
+    "    # Get the screen width and height\n",
+    "    screen_width = root.winfo_screenwidth()\n",
+    "    screen_height = root.winfo_screenheight()\n",
+    "\n",
+    "    # Set the window size to 50% of the screen width and height\n",
+    "    window_width = int(screen_width / 2)\n",
+    "    window_height = int(screen_height / 2)\n",
+    "    root.geometry(\"{}x{}+{}+{}\".format(window_width, window_height, int((screen_width - window_width) / 2), int((screen_height - window_height) / 2)))\n",
+    "\n",
+    "    # Set the font for the message label\n",
+    "    font_style = tkfont.Font(family=\"Helvetica\", size=36, weight=\"bold\")\n",
+    "\n",
+    "    # Create the label for the message\n",
+    "    alert_text='Please confirm. Are you trying to \\n delete '+ \" {\" + course_name[course_name.find(' '):] + \"} \"\n",
+    "    message_label = tk.Label(root, text = alert_text , font=font_style, fg=\"#FF0000\")\n",
+    "    message_label.pack(expand=True, pady=(window_height//4, 0))\n",
+    "\n",
+    "    # Create an empty label\n",
+    "    empty_label = tk.Label(root, text=\"\", bg=\"#FFFF99\")\n",
+    "    empty_label.pack()\n",
+    "\n",
+    "    # Create the frame for the buttons\n",
+    "    button_frame = tk.Frame(root, bg=\"#FFFF99\")\n",
+    "    button_frame.pack(expand=True)\n",
+    "\n",
+    "    # Create the Yes button\n",
+    "    yes_button = tk.Button(button_frame, text=\"Yes\", font=font_style, bg=\"#FFCCCC\", command=yes_action)\n",
+    "    yes_button.pack(side=tk.LEFT, padx=5)\n",
+    "\n",
+    "    # Create an empty label\n",
+    "    empty_label2 = tk.Label(button_frame, text=\"\", bg=\"#FFFF99\")\n",
+    "    empty_label2.pack(side=tk.LEFT, padx=5)\n",
+    "\n",
+    "    # Create the No button\n",
+    "    no_button = tk.Button(button_frame, text=\"No\", font=font_style, bg=\"#FFCCCC\", command=no_action)\n",
+    "    no_button.pack(side=tk.RIGHT, padx=5)\n",
+    "\n",
+    "    # Run the main loop\n",
+    "    root.mainloop()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 114,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# def deleteNavigationpanel():\n",
+    "#     print(\"Clearing navigation panel\")\n",
+    "\n",
+    "# def deleteAnnouncements():\n",
+    "#     print(\"Deleting announcements\")\n",
+    "\n",
+    "# def deleteContacts():\n",
+    "#     print(\"Deleting contacts\")\n",
+    "\n",
+    "# def deleteBlogs():\n",
+    "#     print(\"Deleting blogs\")\n",
+    "\n",
+    "# def deleteGlossary():\n",
+    "#     print(\"Deleting glossary\")\n",
+    "\n",
+    "# def deleteGroups():\n",
+    "#     print(\"Deleting groups\")\n",
+    "\n",
+    "# def deleteJournals():\n",
+    "#     print(\"Deleting journals\")\n",
+    "\n",
+    "# def deleteTasks():\n",
+    "#     print(\"Deleting tasks\")\n",
+    "\n",
+    "# def deleteWikis():\n",
+    "#     print(\"Deleting wikis\")\n",
+    "\n",
+    "# def deleteDiscussionboards():\n",
+    "#     print(\"Deleting discussion boards\")\n",
+    "\n",
+    "# def deleteRubrics():\n",
+    "#     print(\"Deleting rubrics\")\n",
+    "\n",
+    "# def deleteTestsSurveysPools(para):\n",
+    "#     print(\"Deleting\",para)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 115,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def options_window():\n",
+    "    root = tk.Tk()\n",
+    "#     root.overrideredirect(True)  # Remove window decorations\n",
+    "#     root.geometry(\"{0}x{1}+0+0\".format(root.winfo_screenwidth(), root.winfo_screenheight()))  # Set window to full screen\n",
+    "#     root.wait_visibility(root)  # Wait for window to be visible\n",
+    "#     root.attributes(\"-alpha\", 0.5)  # Set window transparency\n",
+    "\n",
+    "    # Create overlay window\n",
+    "#     overlay = tk.Toplevel(root)\n",
+    "#     overlay.overrideredirect(True)\n",
+    "    root.geometry('300x500+{}+{}'.format(root.winfo_screenwidth()//2-150, root.winfo_screenheight()//2-250))\n",
+    "#     overlay.configure(bg='white')\n",
+    "\n",
+    "    clear_items = []\n",
+    "\n",
+    "    def to_clear():\n",
+    "        global clear_items\n",
+    "        clear_items = [option for option in check_vars if check_vars[option].get()]\n",
+    "        root.destroy()\n",
+    "        print(clear_items)\n",
+    "        if 'All' in clear_items[0]:\n",
+    "            clear_items = list(OPTIONS.keys())[1:]\n",
+    "        print(clear_items)\n",
+    "        for i in clear_items:\n",
+    "            i='delete'+i.title()+'()'\n",
+    "#             print(i)\n",
+    "            if 'deleteTestssurveyspools' in i:\n",
+    "                deleteTestsSurveysPools('Tests')\n",
+    "                deleteTestsSurveysPools('Surveys')\n",
+    "                deleteTestsSurveysPools('Pools')\n",
+    "                continue\n",
+    "            if 'deleteNavigationpanel' in i:\n",
+    "                print(i)\n",
+    "                new_home()\n",
+    "                eval(i)\n",
+    "                time.sleep(2)\n",
+    "#                 addToolKit()\n",
+    "                time.sleep(2)\n",
+    "                driver.get(url)\n",
+    "                wait = WebDriverWait(driver, 5)\n",
+    "                element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, \"iframe[name='classic-learn-iframe']\")))\n",
+    "                iframe = driver.find_element(By.CSS_SELECTOR, \"iframe[name='classic-learn-iframe']\")\n",
+    "                driver.switch_to.frame(iframe)\n",
+    "                continue\n",
+    "            eval(i)\n",
+    "\n",
+    "\n",
+    "    OPTIONS = {\n",
+    "        'All':'all',\n",
+    "        'NavigationPanel': 'clear_navigation_panel()',\n",
+    "        'Announcements': 'deleteAnnouncements()',\n",
+    "        'Contacts': 'deleteContacts()',\n",
+    "        'Blogs': 'deleteBlogs()',\n",
+    "        'Glossary': 'deleteGlossary()',\n",
+    "        'Groups': 'deleteGroups()',\n",
+    "        'Journals': 'deleteJournals()',\n",
+    "        'Tasks': 'deleteTasks()',\n",
+    "        'Wikis': 'deleteWikis()',\n",
+    "        'DiscussionBoards': 'deleteDiscussionBoards()',\n",
+    "        'Rubrics': 'deleteRubrics()',\n",
+    "        'TestsSurveysPools': 'deleteTestsSurveysPools(\"Tests\")'\n",
+    "    }\n",
+    "\n",
+    "    label = tk.Label(root, text='Select options to delete:', font=('Arial', 12, 'bold'), bg='white')\n",
+    "    label.pack(pady=10)\n",
+    "\n",
+    "    check_vars = {}\n",
+    "    for option in OPTIONS:\n",
+    "        check_vars[option] = tk.BooleanVar()\n",
+    "        check = tk.Checkbutton(root, text=option, variable=check_vars[option], onvalue=True, offvalue=False, font=('Arial', 10, 'bold'), bg='white')\n",
+    "        check.pack(anchor='w')\n",
+    "\n",
+    "    button = tk.Button(root, text='Submit', command= to_clear, font=('Arial', 12, 'bold'), bg='white')\n",
+    "    button.pack(pady=10)\n",
+    "\n",
+    "    root.mainloop()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 116,
+   "metadata": {
+    "scrolled": true
+   },
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "calling1\n",
+      "calling2\n",
+      "Yes button clicked\n",
+      "good\n",
+      "['All']\n",
+      "['NavigationPanel', 'Announcements', 'Contacts', 'Blogs', 'Glossary', 'Groups', 'Journals', 'Tasks', 'Wikis', 'DiscussionBoards', 'Rubrics', 'TestsSurveysPools']\n",
+      "deleteNavigationpanel()\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"555b7fa7-8683-44c4-9b42-bfd17da017aa\")>\n",
+      "ok_del\n",
+      "53\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"555b7fa7-8683-44c4-9b42-bfd17da017aa\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"ee89d66d-6205-4dad-bac1-b7bf21e2fc9e\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"f7552829-c6ea-4763-a05a-59338313aba4\")>\n",
+      "ok_del\n",
+      "52\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"c8b39412-bffb-4ef6-9b80-d7af3934e83b\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"7ec1bc26-74d3-4ebf-a03c-c08c8e31e09e\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"b7a15a03-44f8-4e0a-a7c7-500ca88c74b0\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"6264b0cd-1c59-460b-b666-b5574efea942\")>\n",
+      "ok_del\n",
+      "50\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"6264b0cd-1c59-460b-b666-b5574efea942\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"e23521b9-4138-407b-94f3-099eaed498a3\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"8e4d54bf-1f0d-4d84-a164-5cc07146fa9f\")>\n",
+      "ok_del\n",
+      "49\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"8e4d54bf-1f0d-4d84-a164-5cc07146fa9f\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"382d283d-dbb1-4a25-b733-0473ac0baadc\")>\n",
+      "ok_del\n",
+      "48\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"d0e863a2-1a3b-433b-a56d-644029849a46\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"cc82277e-28e0-4c46-954e-b052e600d487\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"ec3fd57c-fca6-4e48-af73-ca5b77e0aefe\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"22d1ac09-33d2-49b5-9c91-a3e034579aeb\")>\n",
+      "ok_del\n",
+      "46\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"dc342fac-f683-4dae-9d21-0879930401e2\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"fe5f224b-0bd4-4abb-8203-56081af4b3ba\")>\n",
+      "ok_del\n",
+      "45\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"8ab4c500-40d4-4d10-bd4d-9ede716152ae\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"0389bca3-dc74-460a-a6e4-7d5640bf543f\")>\n",
+      "ok_del\n",
+      "44\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"0cc6c937-b717-4dce-982e-d44427f7a99f\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"ad43bfe3-0b48-426a-8a8e-200a39d1cd07\")>\n",
+      "ok_del\n",
+      "43\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"11c97133-3a70-4b12-99f2-fc9418c9da65\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"c37cf3a4-0cf7-4e3f-ae50-34e5c38ec3f2\")>\n",
+      "ok_del\n",
+      "42\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"238133ef-b64c-4029-b142-4a5a367a339b\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"e02ceaad-e168-4550-9c1d-5e7889d2d103\")>\n",
+      "ok_del\n",
+      "41\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"e02ceaad-e168-4550-9c1d-5e7889d2d103\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"db61755c-76d9-4f78-94ea-10a50b1fa799\")>\n",
+      "ok_del\n",
+      "40\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"db61755c-76d9-4f78-94ea-10a50b1fa799\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"98f2a6c8-ed5b-4727-9bad-2d57ea5518a7\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"34e8cc57-4ede-49ee-be07-1082c25415ed\")>\n",
+      "ok_del\n",
+      "39\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"f512fa4f-fe14-4cac-9a7a-387818570506\")>\n",
+      "ok_del\n",
+      "38\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"497d2833-e98c-4e0c-9247-832ec6e85acb\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"8a8c0c13-9882-49c1-9dd8-c668a7ccc213\")>\n",
+      "ok_del\n",
+      "37\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"8a8c0c13-9882-49c1-9dd8-c668a7ccc213\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"2badbb96-1611-4b84-8e38-6648a69baed9\")>\n",
+      "ok_del\n",
+      "36\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"2badbb96-1611-4b84-8e38-6648a69baed9\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"5197c97a-ced4-478f-855e-02ba708190b3\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"1a5b5423-72b9-4202-9826-94cba175a80c\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"00edd36c-6852-41fb-91ae-ed1cdce4e4e8\")>\n",
+      "ok_del\n",
+      "34\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"00edd36c-6852-41fb-91ae-ed1cdce4e4e8\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"c73f927d-e3af-468f-99cb-04cc5804531b\")>\n",
+      "ok_del\n",
+      "33\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"c73f927d-e3af-468f-99cb-04cc5804531b\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"de0f1999-6b5c-4c68-8339-a86372537141\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"4c88accc-161e-4947-800d-2b0ac2063446\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"a7139529-43d3-4dda-8ee4-a61d64e17b28\")>\n",
+      "ok_del\n",
+      "31\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"a7139529-43d3-4dda-8ee4-a61d64e17b28\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"315ff0a0-8820-4137-aae0-87b913436772\")>\n",
+      "ok_del\n",
+      "30\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"315ff0a0-8820-4137-aae0-87b913436772\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"99c8002c-0ab9-4e68-8432-8c1f2b625890\")>\n",
+      "ok_del\n",
+      "29\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"99c8002c-0ab9-4e68-8432-8c1f2b625890\")>\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"0785345a-67a1-4b30-ac64-8911afea4ad7\")>\n",
+      "ok_del\n",
+      "28\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"0785345a-67a1-4b30-ac64-8911afea4ad7\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"b3566944-00c8-4f70-bac6-5b8d37b7d13b\")>\n",
+      "ok_del\n",
+      "27\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"b3566944-00c8-4f70-bac6-5b8d37b7d13b\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"08262d28-e43a-4c6a-b704-71a773a9cdf5\")>\n",
+      "ok_del\n",
+      "26\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"08262d28-e43a-4c6a-b704-71a773a9cdf5\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"5a005970-6fe1-4fc3-91dc-59d1ea6de4c5\")>\n",
+      "ok_del\n",
+      "25\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"5a005970-6fe1-4fc3-91dc-59d1ea6de4c5\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"77643085-8875-4b95-a970-fc07047d5bda\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"e9d912a5-51e7-49c4-9858-897976b4b618\")>\n",
+      "ok_del\n",
+      "24\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"e9d912a5-51e7-49c4-9858-897976b4b618\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"19ec4cd6-7247-4f05-a7ca-27996be66baa\")>\n",
+      "ok_del\n",
+      "23\n",
+      "ok1\n",
+      "ok2\n",
+      "ok1\n",
+      "ok2\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"19ec4cd6-7247-4f05-a7ca-27996be66baa\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"d80df39f-e175-49b3-bd25-fb477e2966f6\")>\n",
+      "ok_del\n",
+      "22\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"d80df39f-e175-49b3-bd25-fb477e2966f6\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"7b0e9893-5acd-4c50-b15c-04eed37867d5\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"cc43a2e4-5761-4639-b3a2-ffc31cbd3dfa\")>\n",
+      "ok_del\n",
+      "21\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"07f3aab9-a64c-41e4-b590-13857b8f2815\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"3c2af36e-1232-4adb-8446-bf78ce6169c6\")>\n",
+      "ok_del\n",
+      "20\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"3c2af36e-1232-4adb-8446-bf78ce6169c6\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"d3299b80-f8ac-42e7-a543-ebb9d734871e\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"f2efbb76-bd96-41ec-be85-2f7e101490d4\")>\n",
+      "ok_del\n",
+      "19\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"f2efbb76-bd96-41ec-be85-2f7e101490d4\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"c1a5b91e-e598-49e8-8acc-f9147d8f4864\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"e95e2bae-4c2b-415b-a15d-08393f7c7c74\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"85007bb0-69c8-4e45-b58b-9fca7b548b11\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"f62603e8-8efe-4d55-99b1-659992509c08\")>\n",
+      "ok_del\n",
+      "16\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"f62603e8-8efe-4d55-99b1-659992509c08\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"82abdb95-c8ef-4ef5-a4c6-69ca1fe76944\")>\n",
+      "ok_del\n",
+      "15\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"de01ce10-d278-4293-a78d-58dc205de0e4\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"4821e078-9868-4ffc-ae85-d1aec4a670ed\")>\n",
+      "ok_del\n",
+      "14\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"4821e078-9868-4ffc-ae85-d1aec4a670ed\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"99cec0e1-5360-485b-a41a-d6002f0cbfd2\")>\n",
+      "ok_del\n",
+      "13\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"99cec0e1-5360-485b-a41a-d6002f0cbfd2\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"3a2b24cc-c3a7-4b0c-ba39-da5247382d14\")>\n",
+      "ok_del\n",
+      "12\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"3a2b24cc-c3a7-4b0c-ba39-da5247382d14\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"3e831869-53fe-4389-8fdd-34c0d61fe337\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"a871ae33-a97a-412a-92ed-cf7aff2a7bb9\")>\n",
+      "ok_del\n",
+      "11\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"a871ae33-a97a-412a-92ed-cf7aff2a7bb9\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"fd9575e2-5376-4c93-867f-38299ee92483\")>\n",
+      "ok_del\n",
+      "10\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"fd9575e2-5376-4c93-867f-38299ee92483\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"9afa17a0-3896-4a6c-91e5-e8f590b77c61\")>\n",
+      "ok_del\n",
+      "9\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"9afa17a0-3896-4a6c-91e5-e8f590b77c61\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"f7272df1-3f1c-4dd8-a159-15314f4155c4\")>\n",
+      "ok_del\n",
+      "8\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"f7272df1-3f1c-4dd8-a159-15314f4155c4\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"32f154a2-3a4d-4683-9137-f88673cf6540\")>\n",
+      "ok_del\n",
+      "7\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"32f154a2-3a4d-4683-9137-f88673cf6540\")>\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"233fb17f-7145-4ff0-a65e-0b98d41d3649\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"7bbc2adf-233a-4465-b66d-26dfa1c487c1\")>\n",
+      "ok_del\n",
+      "6\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"7bbc2adf-233a-4465-b66d-26dfa1c487c1\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"94abef9e-d535-4bba-bc3b-a05e8ecedc8b\")>\n",
+      "ok_del\n",
+      "5\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"6af04624-4a7f-4904-96c1-ca6036cd49fa\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"68fbb43b-c56c-48fd-9d5c-c0968d1e7f6c\")>\n",
+      "ok_del\n",
+      "4\n",
+      "ok1\n",
+      "ok2\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"a0f3e517-aacf-409f-8c2d-7295d7f6da16\")>\n"
+     ]
+    },
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "ok_del\n",
+      "3\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"b10ce79e-d5fd-4724-8f7a-118e05d6ad2f\")>\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"ebd8fe6f-c7ee-4826-8322-155739c7e02b\")>\n",
+      "ok_del\n",
+      "2\n",
+      "ok1\n",
+      "ok2\n",
+      "<selenium.webdriver.remote.webelement.WebElement (session=\"3da7f6e83c43e64a6e2075dad34f948f\", element=\"fef5042c-cd36-4ada-b1e3-fd0ebf0fa94f\")>\n",
+      "ok_del\n",
+      "1\n",
+      "done nav\n",
+      "done nav\n",
+      "\n",
+      "all complete\n"
+     ]
+    },
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "Exception in Tkinter callback\n",
+      "Traceback (most recent call last):\n",
+      "  File \"/Users/icommonscrc/anaconda3/lib/python3.10/tkinter/__init__.py\", line 1921, in __call__\n",
+      "    return self.func(*args)\n",
+      "  File \"/var/folders/jn/76ft68hs2yl13ckvzmcpd__h6mwsv8/T/ipykernel_33423/3555025028.py\", line 28, in to_clear\n",
+      "    deleteTestsSurveysPools('Tests')\n",
+      "  File \"/var/folders/jn/76ft68hs2yl13ckvzmcpd__h6mwsv8/T/ipykernel_33423/2154378556.py\", line 7, in deleteTestsSurveysPools\n",
+      "    teachingStyle = driver.find_element(By.XPATH, '//*[@title=\"Tests, Surveys, and Pools\"]').click()\n",
+      "  File \"/Users/icommonscrc/anaconda3/lib/python3.10/site-packages/selenium/webdriver/remote/webelement.py\", line 94, in click\n",
+      "    self._execute(Command.CLICK_ELEMENT)\n",
+      "  File \"/Users/icommonscrc/anaconda3/lib/python3.10/site-packages/selenium/webdriver/remote/webelement.py\", line 404, in _execute\n",
+      "    return self._parent.execute(command, params)\n",
+      "  File \"/Users/icommonscrc/anaconda3/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py\", line 440, in execute\n",
+      "    self.error_handler.check_response(response)\n",
+      "  File \"/Users/icommonscrc/anaconda3/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py\", line 245, in check_response\n",
+      "    raise exception_class(message, screen, stacktrace)\n",
+      "selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable\n",
+      "  (Session info: chrome=111.0.5563.110)\n",
+      "Stacktrace:\n",
+      "0   chromedriver                        0x0000000105943428 chromedriver + 4899880\n",
+      "1   chromedriver                        0x00000001058c0a23 chromedriver + 4364835\n",
+      "2   chromedriver                        0x000000010550aa71 chromedriver + 473713\n",
+      "3   chromedriver                        0x000000010554fd78 chromedriver + 757112\n",
+      "4   chromedriver                        0x0000000105540cf3 chromedriver + 695539\n",
+      "5   chromedriver                        0x0000000105574562 chromedriver + 906594\n",
+      "6   chromedriver                        0x0000000105540361 chromedriver + 693089\n",
+      "7   chromedriver                        0x000000010557471e chromedriver + 907038\n",
+      "8   chromedriver                        0x000000010558fb5b chromedriver + 1018715\n",
+      "9   chromedriver                        0x0000000105574333 chromedriver + 906035\n",
+      "10  chromedriver                        0x000000010553e55f chromedriver + 685407\n",
+      "11  chromedriver                        0x000000010553fa7e chromedriver + 690814\n",
+      "12  chromedriver                        0x000000010591079e chromedriver + 4691870\n",
+      "13  chromedriver                        0x0000000105915961 chromedriver + 4712801\n",
+      "14  chromedriver                        0x000000010591c2ff chromedriver + 4739839\n",
+      "15  chromedriver                        0x000000010591685a chromedriver + 4716634\n",
+      "16  chromedriver                        0x00000001058e8fce chromedriver + 4530126\n",
+      "17  chromedriver                        0x00000001059365c8 chromedriver + 4847048\n",
+      "18  chromedriver                        0x0000000105936747 chromedriver + 4847431\n",
+      "19  chromedriver                        0x000000010594b87f chromedriver + 4933759\n",
+      "20  libsystem_pthread.dylib             0x00007fff203de8fc _pthread_start + 224\n",
+      "21  libsystem_pthread.dylib             0x00007fff203da443 thread_start + 15\n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "#Function Calls\n",
+    "login(url)\n",
+    "\n",
+    "# time.sleep(10) # delay to ender 2FA code\n",
+    "wait = WebDriverWait(driver, 1)\n",
+    "element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, \"iframe[name='classic-learn-iframe']\")))\n",
+    "iframe = driver.find_element(By.CSS_SELECTOR, \"iframe[name='classic-learn-iframe']\")\n",
+    "driver.switch_to.frame(iframe)\n",
+    "print('calling1')\n",
+    "\n",
+    "a_tag = driver.find_element(By.XPATH, \"//a[@id='courseMenu_link']\")\n",
+    "course_name = a_tag.get_attribute(\"title\")\n",
+    "\n",
+    "\n",
+    "time.sleep(1)\n",
+    "print('calling2')\n",
+    "alert_message()\n",
+    "\n",
+    "print('good')\n",
+    "if flag:\n",
+    "    options_window()\n",
+    "    \n",
+    "\n",
+    "# print(\"tests...\", end=\"\\r\")\n",
+    "# deleteTestsSurveysPools(\"Tests\")\n",
+    "# print(\"tests complete\")\n",
+    "# time.sleep(1)\n",
+    "\n",
+    "# print(\"surveys...\", end=\"\\r\")\n",
+    "# deleteTestsSurveysPools(\"Surveys\")\n",
+    "# print(\"surveys complete\")\n",
+    "# time.sleep(1)\n",
+    "\n",
+    "# print(\"pools...\", end=\"\\r\")\n",
+    "# deleteTestsSurveysPools(\"Pools\")\n",
+    "# print(\"pools complete\")\n",
+    "# time.sleep(1)\n",
+    "\n",
+    "# #####deleteGradeCenter()##### Not working right now :(\n",
+    "\n",
+    "# deleteContentCollection()\n",
+    "\n",
+    "print(\"\\nall complete\")"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3 (ipykernel)",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.10.9"
+  },
+  "vscode": {
+   "interpreter": {
+    "hash": "bfbd41900f4606bc1fe03692a08741356f9ff1925665a921e8b2198fd530f771"
+   }
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}