def main(): # Get opts parser = argparse.ArgumentParser( description='Automated lab setup in Horizon') parser.add_argument("--headless", help="Must have pyvirtualdisplay module", required=False, action='store_true') args = parser.parse_args() try: # Prep --------------------------------------------------------------------------------------------------------- Images.get_guest_image() print "Test: PASS - Get cgcs-guest.img" # End of Prep -------------------------------------------------------------------------------------------------- # LAB_SETUP GUI VERSION ---------------------------------------------------------------------------------------- project_name_one = "admin" project_name_two = "tenant1" project_name_three = "tenant2" tenant_list = [project_name_two, project_name_three] # Start web driver with firefox and set URL address to 10.10.10.2 DriverUtils.open_driver(settings.DEFAULT_BROWSER, args.headless) DriverUtils.set_url(settings.DEFAULT_URL) # Wait for elements on page to load DriverUtils.wait_for_elements(settings.DEFAULT_ELEMENT_LOAD_TIME) # Call login module Login.login(project_name_one, project_name_one) # Wait for elements on page to load DriverUtils.wait_for_elements(settings.DEFAULT_ELEMENT_LOAD_TIME) print "Test: PASS - Begin Lab Setup" # Create Tenants ----------------------------------------------------------------------------------------------- tenant_two = [ project_name_two, project_name_two, "*****@*****.**", project_name_two ] tenant_three = [ project_name_three, project_name_three, "*****@*****.**", project_name_three ] Tenants.tenants(tenant_two[0], tenant_two[1], tenant_two[2], tenant_two[3]) Tenants.tenants(tenant_three[0], tenant_three[1], tenant_three[2], tenant_three[3]) print "Test: PASS - Create tenants" # End of Create Tenants ---------------------------------------------------------------------------------------- # Modify Quotas ------------------------------------------------------------------------------------------------ # params (user_name, metadata Items, VCPUs, Instances, Injected Files, Injected File Content (Bytes), Volumes, # Volume Snapshots ,Total Size of Volumes and Snapshots (GB), RAM (MB), Security Groups, Security Groups Rules, # Floating IPs, Networks, Ports, Routers, Subnets) quota_dict_tenant_one = { 'id_metadata_items': None, 'id_cores': [0, 'text'], 'id_instances': [0, 'text'], 'id_injected_files': None, 'id_injected_file_content_bytes': None, 'id_volumes': [2, 'text'], 'id_snapshots': [2, 'text'], 'id_gigabytes': None, 'id_ram': None, 'id_security_group': None, 'id_security_group_rule': None, 'id_floatingip': [0, 'text'], 'id_network': [4, 'text'], 'id_port': [10, 'text'], 'id_router': None, 'id_subnet': [3, 'text'] } quota_dict_tenant_two = { 'id_metadata_items': None, 'id_cores': [2, 'text'], 'id_instances': [1, 'text'], 'id_injected_files': None, 'id_injected_file_content_bytes': None, 'id_volumes': [2, 'text'], 'id_snapshots': [2, 'text'], 'id_gigabytes': None, 'id_ram': None, 'id_security_group': None, 'id_security_group_rule': None, 'id_floatingip': [1, 'text'], 'id_network': [3, 'text'], 'id_port': [39, 'text'], 'id_router': None, 'id_subnet': [13, 'text'] } quota_dict_tenant_three = { 'id_metadata_items': None, 'id_cores': [2, 'text'], 'id_instances': [1, 'text'], 'id_injected_files': None, 'id_injected_file_content_bytes': None, 'id_volumes': [2, 'text'], 'id_snapshots': [2, 'text'], 'id_gigabytes': None, 'id_ram': None, 'id_security_group': None, 'id_security_group_rule': None, 'id_floatingip': [1, 'text'], 'id_network': [3, 'text'], 'id_port': [39, 'text'], 'id_router': None, 'id_subnet': [13, 'text'] } ModifyQuotas.quotas(project_name_one, quota_dict_tenant_one) ModifyQuotas.quotas(project_name_two, quota_dict_tenant_two) ModifyQuotas.quotas(project_name_three, quota_dict_tenant_three) print "Test: PASS - Modify quotas" # End of Modify Quotas ----------------------------------------------------------------------------------------- # Create Flavors ----------------------------------------------------------------------------------------------- # Params (flavor_name, vcpus, ram, root_disk, ephemeral_disk, swap_disk) flavor_one = [ "small", 1, 512, 1, 0, 0, "CPU Policy", "Dedicated", "Memory Page Size", "2048" ] flavor_two = [ "medium.dpdk", 2, 1024, 1, 0, 0, "CPU Policy", "Dedicated", "Memory Page Size", "2048", "VCPU Model", "Intel Core i7 9xx (Nehalem Class Core i7)" ] flavor_three = [ "small.float", 1, 512, 1, 0, 0, "CPU Policy", "Dedicated", "Memory Page Size", "2048" ] flavor_full_link = Flavors.flavors(flavor_one[0], flavor_one[1], flavor_one[2], flavor_one[3], flavor_one[4], flavor_one[5]) Flavors.create_extra_spec(flavor_full_link, flavor_one[6], flavor_one[7]) Flavors.create_extra_spec(flavor_full_link, flavor_one[8], flavor_one[9]) flavor_full_link = Flavors.flavors(flavor_two[0], flavor_two[1], flavor_two[2], flavor_two[3], flavor_two[4], flavor_two[5]) Flavors.create_extra_spec(flavor_full_link, flavor_two[6], flavor_two[7]) Flavors.create_extra_spec(flavor_full_link, flavor_two[8], flavor_two[9]) Flavors.create_extra_spec(flavor_full_link, flavor_two[10], flavor_two[11]) flavor_full_link = Flavors.flavors(flavor_three[0], flavor_three[1], flavor_three[2], flavor_three[3], flavor_three[4], flavor_three[5]) Flavors.create_extra_spec(flavor_full_link, flavor_three[6], flavor_three[7]) Flavors.create_extra_spec(flavor_full_link, flavor_three[8], flavor_three[9]) print "Test: PASS - Create flavors" # End of Create Flavors ---------------------------------------------------------------------------------------- # Create Key Pairs --------------------------------------------------------------------------------------------- Logout.logout() Login.login(project_name_two, project_name_two) KeyPairs.key_pairs("keypair-tenant1") Logout.logout() Login.login(project_name_three, project_name_three) KeyPairs.key_pairs("keypair-tenant2") Logout.logout() Login.login(project_name_one, project_name_one) print "Test: PASS - Create key pairs" # End of Create Key Pairs -------------------------------------------------------------------------------------- # Provider Networks -------------------------------------------------------------------------------------------- provider_network_one = [ "group0-ext0", "vlan", 1500, True, "group0-ext0-r0-0", True, None, 10, 10 ] provider_network_two = [ "group0-data0", "vlan", 1500, True, "group0-data0-r1-0", True, project_name_two, 600, 615 ] provider_network_three = [ "group0-data0b", "vlan", 1500, True, "group0-data0b-r2-0", True, None, 700, 731 ] provider_network_four = [ "group0-data1", "vlan", 1500, True, "group0-data1-r3-0", True, project_name_three, 616, 631 ] provider_net_link = Networks.networks(provider_network_one[0], provider_network_one[1], provider_network_one[2], provider_network_one[3]) print provider_net_link # Create range for provider net above Networks.provider_net_range_create(provider_net_link, provider_network_one[4], provider_network_one[5], provider_network_one[6], provider_network_one[7], provider_network_one[8]) provider_net_link = Networks.networks(provider_network_two[0], provider_network_two[1], provider_network_two[2], provider_network_two[3]) # Create range for provider net above Networks.provider_net_range_create(provider_net_link, provider_network_two[4], provider_network_two[5], provider_network_two[6], provider_network_two[7], provider_network_two[8]) provider_net_link = Networks.networks(provider_network_three[0], provider_network_three[1], provider_network_three[2], provider_network_three[3]) # Create range for provider net above Networks.provider_net_range_create(provider_net_link, provider_network_three[4], provider_network_three[5], provider_network_three[6], provider_network_three[7], provider_network_three[8]) provider_net_link = Networks.networks(provider_network_four[0], provider_network_four[1], provider_network_four[2], provider_network_four[3]) # Create range for provider net above Networks.provider_net_range_create(provider_net_link, provider_network_four[4], provider_network_four[5], provider_network_four[6], provider_network_four[7], provider_network_four[8]) print "Test: PASS - Create provider networks" # END Of Provider Networks-------------------------------------------------------------------------------------- # SCRIPT EXPECTS COMPUTES TO BE ONLINE NOW # Check computes have 'Availability State' as 'Online' host_list = Hosts.hosts() # Create Interfaces & Modify Hosts ----------------------------------------------------------------------------- provider_net_list1 = ["group0-ext0", "group0-data0", "group0-data0b"] provider_net_list2 = ["group0-data1"] for hostname in host_list: Hosts.modify_interface(hostname[0], "data0", "data", "eth2", 1500, provider_net_list1) Hosts.modify_interface(hostname[0], "data1", "data", "eth3", 1500, provider_net_list2) # Local storage changes: Hosts.add_local_storage(hostname[0], 2048) # Controller-1 Changes: # Modify OAM interfaces for controller-1 Hosts.modify_interface("controller-1", "oam0", "oam", "eth0", 1500, None) # Add cinder device configuration for controller-1 Hosts.create_cinder_device("controller-1") for host in host_list: # Host Profiles if_profile_name = "ifprofile-" + host[0] cpu_profile_name = "cpuprofile-" + host[0] mem_profile_name = "memprofile-" + host[0] Hosts.create_interface_profile(host[0], if_profile_name) Hosts.create_cpu_profile(host[0], cpu_profile_name) Hosts.create_mem_profile(host[0], mem_profile_name) # Not sure how to apply profiles? Look like lab_setup.sh profiles when I create them print "Test: PASS - Create & modify host interfaces" # Create Interfaces & Modify Hosts ----------------------------------------------------------------------------- # Create Images ------------------------------------------------------------------------------------------------ # FIX TODO: Jira: https://jira.wrs.com:8443/browse/CGTS-3158 # TODO: If Jira above is fixed, please uncomment the two lines of code (Images.images) below. # TODO: You no longer need to manually createthe guest image. # Images.images("cgcs-guest", "http://yow-cgcs-test.wrs.com/files/cgcs_guestimg/cgcs-guest.img", "Raw", False, # None, None, True, False) print "Test: PASS - Create image" # End of Create Images ----------------------------------------------------------------------------------------- # Create Volumes ----------------------------------------------------------------------------------------------- Logout.logout() Login.login(project_name_two, project_name_two) Volumes.volumes("vol-tenant1-avp1", "Image", "cgcs-guest (608.0 MB)", "nova") Logout.logout() Login.login(project_name_three, project_name_three) Volumes.volumes("vol-tenant2-avp1", "Image", "cgcs-guest (608.0 MB)", "nova") Logout.logout() Login.login(project_name_one, project_name_one) print "Test: PASS - Create volumes" # End of Create Volumes ---------------------------------------------------------------------------------------- # Create QoS Policies ------------------------------------------------------------------------------------------ qos_policy_list = ["external-qos", "internal-qos"] Networks.create_qos_policy("external-qos", "External Network Policy", 16, project_name_one) Networks.create_qos_policy("internal-qos", "Internal Network Policy", 4, project_name_one) for tenant in tenant_list: name = tenant + "-mgmt-qos" desc = tenant + "Management Network Policy" Networks.create_qos_policy(name, desc, 8, tenant) qos_policy_list.append(name) print "Test: PASS - QoS policies" # End of Create QoS Policies ----------------------------------------------------------------------------------- # Create Networks ---------------------------------------------------------------------------------------------- network_one = [ "external-net0", project_name_one, "vlan", "group0-ext0", 10, "external-qos", True, True, False ] network_two = [ "internal0-net0", project_name_one, "vlan", "group0-data0b", 700, "internal-qos", True, False, False ] network_three = [ "tenant1-mgmt-net", project_name_two, "vlan", "group0-data0", None, "tenant1-mgmt-qos", False, False, False ] subnet_one = [ "external-subnet0", "192.168.1.0/24", "192.168.1.1", False, True, False, "192.168.1.2,192.168.1.254", None, None, None ] subnet_two = [ "internal0-subnet0-1", "10.0.1.0/24", None, True, False, False, None, None, None, 1 ] network_name = Networks.create_network(network_one[0], network_one[1], network_one[2], network_one[3], network_one[4], network_one[5], network_one[6], network_one[7], network_one[8]) # Create subnet for network above Networks.create_subnet(network_name, subnet_one[0], subnet_one[1], subnet_one[2], subnet_one[3], subnet_one[4], subnet_one[5], subnet_one[6], subnet_one[7], subnet_one[8], subnet_one[9]) # Create Network network_name = Networks.create_network(network_two[0], network_two[1], network_two[2], network_two[3], network_two[4], network_two[5], network_two[6], network_two[7], network_two[8]) # Create subnet for network above Networks.create_subnet(network_name, subnet_two[0], subnet_two[1], subnet_two[2], subnet_two[3], subnet_two[4], subnet_two[5], subnet_two[6], subnet_two[7], subnet_two[8], subnet_two[9]) network_name = Networks.create_network( network_three[0], network_three[1], network_three[2], network_three[3], network_three[4], network_three[5], network_three[6], network_three[7], network_three[8]) print "Test: PASS - Create networks" # End of Create Networks --------------------------------------------------------------------------------------- # Create Router, router interfaces and Subnets ----------------------------------------------------------------- # ...............................................Tenant 1....................................................... project_subnet_t1_zero = [ "tenant1-mgmt-subnet0", "192.168.101.0/27", "192.168.101.1", False, True, True, "192.168.101.2,192.168.101.30", "147.11.57.133\n128.224.144.130\n147.11.57.128", None, None ] project_subnet_t1_one = [ "tenant1-mgmt-subnet1", "192.168.101.32/27", "192.168.101.33", False, True, True, "192.168.101.34,192.168.101.62", "147.11.57.133\n128.224.144.130\n147.11.57.128", None, None ] project_subnet_t1_two = [ "tenant1-mgmt-subnet2", "192.168.101.64/27", "192.168.101.65", False, True, True, "192.168.101.66,192.168.101.94", "147.11.57.133\n128.224.144.130\n147.11.57.128", None, None ] project_subnet_t1_three = [ "tenant1-mgmt-subnet3", "10.101.1.0/27", "10.101.1.1", False, True, True, "10.101.1.2,10.101.1.30", "147.11.57.133\n128.224.144.130\n147.11.57.128", None, 1 ] project_subnet_t1_four = [ "tenant1-mgmt-subnet4", "10.101.1.32/27", "10.101.1.33", False, True, True, "10.101.1.34,10.101.1.62", "147.11.57.133\n128.224.144.130\n147.11.57.128", None, 1 ] project_subnet_t1_five = [ "tenant1-mgmt-subnet5", "10.101.1.64/27", "10.101.1.65", False, True, True, "10.101.1.66,10.101.1.94", "147.11.57.133\n128.224.144.130\n147.11.57.128", None, 1 ] Logout.logout() # Tenant 1 Router and Subnets Login.login(project_name_two, project_name_two) router_one = "tenant1-router" router_link = Routers.routers(router_one, "external-net0") Networks.create_project_subnet( network_name, project_subnet_t1_zero[0], project_subnet_t1_zero[1], project_subnet_t1_zero[2], project_subnet_t1_zero[3], project_subnet_t1_zero[4], project_subnet_t1_zero[5], project_subnet_t1_zero[6], project_subnet_t1_zero[7], project_subnet_t1_zero[8], project_subnet_t1_zero[9]) # Create router interface subnet_name = "tenant1-mgmt-net: " + "192.168.101.0/27 " + "(tenant1-mgmt-subnet0)" Routers.create_router_interface(router_link, subnet_name, "192.168.101.1") Networks.create_project_subnet( network_name, project_subnet_t1_one[0], project_subnet_t1_one[1], project_subnet_t1_one[2], project_subnet_t1_one[3], project_subnet_t1_one[4], project_subnet_t1_one[5], project_subnet_t1_one[6], project_subnet_t1_one[7], project_subnet_t1_one[8], project_subnet_t1_one[9]) # Create router interface subnet_name = "tenant1-mgmt-net: " + "192.168.101.32/27 " + "(tenant1-mgmt-subnet1)" Routers.create_router_interface(router_link, subnet_name, "192.168.101.33") Networks.create_project_subnet( network_name, project_subnet_t1_two[0], project_subnet_t1_two[1], project_subnet_t1_two[2], project_subnet_t1_two[3], project_subnet_t1_two[4], project_subnet_t1_two[5], project_subnet_t1_two[6], project_subnet_t1_two[7], project_subnet_t1_two[8], project_subnet_t1_two[9]) # Create router interface subnet_name = "tenant1-mgmt-net: " + "192.168.101.64/27 " + "(tenant1-mgmt-subnet2)" Routers.create_router_interface(router_link, subnet_name, "192.168.101.65") Networks.create_project_subnet( network_name, project_subnet_t1_three[0], project_subnet_t1_three[1], project_subnet_t1_three[2], project_subnet_t1_three[3], project_subnet_t1_three[4], project_subnet_t1_three[5], project_subnet_t1_three[6], project_subnet_t1_three[7], project_subnet_t1_three[8], project_subnet_t1_three[9]) # Create router interface subnet_name = "tenant1-mgmt-net: " + "10.101.1.0/27 " + "(tenant1-mgmt-subnet3)" Routers.create_router_interface(router_link, subnet_name, "10.101.1.1") Networks.create_project_subnet( network_name, project_subnet_t1_four[0], project_subnet_t1_four[1], project_subnet_t1_four[2], project_subnet_t1_four[3], project_subnet_t1_four[4], project_subnet_t1_four[5], project_subnet_t1_four[6], project_subnet_t1_four[7], project_subnet_t1_four[8], project_subnet_t1_four[9]) # Create router interface subnet_name = "tenant1-mgmt-net: " + "10.101.1.32/27 " + "(tenant1-mgmt-subnet4)" Routers.create_router_interface(router_link, subnet_name, "10.101.1.33") Networks.create_project_subnet( network_name, project_subnet_t1_five[0], project_subnet_t1_five[1], project_subnet_t1_five[2], project_subnet_t1_five[3], project_subnet_t1_five[4], project_subnet_t1_five[5], project_subnet_t1_five[6], project_subnet_t1_five[7], project_subnet_t1_five[8], project_subnet_t1_five[9]) # Create router interface subnet_name = "tenant1-mgmt-net: " + "10.101.1.64/27 " + "(tenant1-mgmt-subnet5)" Routers.create_router_interface(router_link, subnet_name, "10.101.1.65") Logout.logout() Login.login(project_name_one, project_name_one) Routers.router_distributed(router_link, False) print "Test: PASS - Create router & subnets for tenant 1" # ............................................End of Tenant 1................................................... # ...............................................Tenant 2....................................................... project_subnet_t2_zero = [ "tenant2-mgmt-subnet0", "192.168.201.0/27", "192.168.201.1", False, True, True, "192.168.201.2,192.168.201.30", "147.11.57.133\n128.224.144.130\n147.11.57.128", None, None ] project_subnet_t2_one = [ "tenant2-mgmt-subnet1", "192.168.201.32/27", "192.168.201.33", False, True, True, "192.168.201.34,192.168.201.62", "147.11.57.133\n128.224.144.130\n147.11.57.128", None, None ] project_subnet_t2_two = [ "tenant2-mgmt-subnet2", "192.168.201.64/27", "192.168.201.65", False, True, True, "192.168.201.66,192.168.201.94", "147.11.57.133\n128.224.144.130\n147.11.57.128", None, None ] project_subnet_t2_three = [ "tenant2-mgmt-subnet3", "10.201.1.0/27", "10.201.1.1", False, True, True, "10.201.1.2,10.201.1.30", "147.11.57.133\n128.224.144.130\n147.11.57.128", None, 1 ] project_subnet_t2_four = [ "tenant2-mgmt-subnet4", "10.201.1.32/27", "10.201.1.33", False, True, True, "10.201.1.34,10.201.1.62", "147.11.57.133\n128.224.144.130\n147.11.57.128", None, 1 ] project_subnet_t2_five = [ "tenant2-mgmt-subnet5", "10.201.1.64/27", "10.201.1.65", False, True, True, "10.201.1.66,10.201.1.94", "147.11.57.133\n128.224.144.130\n147.11.57.128", None, 1 ] # Tenant 2 Router and Subnets # Create Network network_name = Networks.create_network("tenant2-mgmt-net", project_name_three, "vlan", "group0-data1", None, "tenant2-mgmt-qos", False, False, False) Logout.logout() Login.login(project_name_three, project_name_three) router_two = "tenant2-router" router_link = Routers.routers(router_two, "external-net0") Networks.create_project_subnet( network_name, project_subnet_t2_zero[0], project_subnet_t2_zero[1], project_subnet_t2_zero[2], project_subnet_t2_zero[3], project_subnet_t2_zero[4], project_subnet_t2_zero[5], project_subnet_t2_zero[6], project_subnet_t2_zero[7], project_subnet_t2_zero[8], project_subnet_t2_zero[9]) # Create router interface subnet_name = "tenant2-mgmt-net: " + "192.168.201.0/27 " + "(tenant2-mgmt-subnet0)" Routers.create_router_interface(router_link, subnet_name, "192.168.201.1") Networks.create_project_subnet( network_name, project_subnet_t2_one[0], project_subnet_t2_one[1], project_subnet_t2_one[2], project_subnet_t2_one[3], project_subnet_t2_one[4], project_subnet_t2_one[5], project_subnet_t2_one[6], project_subnet_t2_one[7], project_subnet_t2_one[8], project_subnet_t2_one[9]) # Create router interface subnet_name = "tenant2-mgmt-net: " + "192.168.201.32/27 " + "(tenant2-mgmt-subnet1)" Routers.create_router_interface(router_link, subnet_name, "192.168.201.33") Networks.create_project_subnet( network_name, project_subnet_t2_two[0], project_subnet_t2_two[1], project_subnet_t2_two[2], project_subnet_t2_two[3], project_subnet_t2_two[4], project_subnet_t2_two[5], project_subnet_t2_two[6], project_subnet_t2_two[7], project_subnet_t2_two[8], project_subnet_t2_two[9]) # Create router interface subnet_name = "tenant2-mgmt-net: " + "192.168.201.64/27 " + "(tenant2-mgmt-subnet2)" Routers.create_router_interface(router_link, subnet_name, "192.168.201.65") Networks.create_project_subnet( network_name, project_subnet_t2_three[0], project_subnet_t2_three[1], project_subnet_t2_three[2], project_subnet_t2_three[3], project_subnet_t2_three[4], project_subnet_t2_three[5], project_subnet_t2_three[6], project_subnet_t2_three[7], project_subnet_t2_three[8], project_subnet_t2_three[9]) # Create router interface subnet_name = "tenant2-mgmt-net: " + "10.201.1.0/27 " + "(tenant2-mgmt-subnet3)" Routers.create_router_interface(router_link, subnet_name, "10.201.1.1") Networks.create_project_subnet( network_name, project_subnet_t2_four[0], project_subnet_t2_four[1], project_subnet_t2_four[2], project_subnet_t2_four[3], project_subnet_t2_four[4], project_subnet_t2_four[5], project_subnet_t2_four[6], project_subnet_t2_four[7], project_subnet_t2_four[8], project_subnet_t2_four[9]) # Create router interface subnet_name = "tenant2-mgmt-net: " + "10.201.1.32/27 " + "(tenant2-mgmt-subnet4)" Routers.create_router_interface(router_link, subnet_name, "10.201.1.33") Networks.create_project_subnet( network_name, project_subnet_t2_five[0], project_subnet_t2_five[1], project_subnet_t2_five[2], project_subnet_t2_five[3], project_subnet_t2_five[4], project_subnet_t2_five[5], project_subnet_t2_five[6], project_subnet_t2_five[7], project_subnet_t2_five[8], project_subnet_t2_five[9]) # Create router interface subnet_name = "tenant2-mgmt-net: " + "10.201.1.64/27 " + "(tenant2-mgmt-subnet5)" Routers.create_router_interface(router_link, subnet_name, "10.201.1.65") Logout.logout() Login.login(project_name_one, project_name_one) Routers.router_distributed(router_link, True) network_name = Networks.create_network("tenant1-net0", project_name_two, "vlan", "group0-data0", None, None, False, False, False) # Create Subnet Networks.create_subnet(network_name, "tenant1-subnet0", "172.16.0.0/24", None, True, False, False, None, None, None, None) network_name = Networks.create_network("tenant2-net0", project_name_three, "vlan", "group0-data1", None, None, False, False, False) # Create Subnet Networks.create_subnet(network_name, "tenant2-subnet0", "172.18.0.0/24", None, True, False, False, None, None, None, None) print "Test: PASS - Create router & subnets for tenant 2" # ............................................End of Tenant 2................................................... print "Test: UI Tests finished" DriverUtils.driver.quit() except: print "Test: FAIL - Exception Thrown" traceback.print_exc() print "Common exceptions are: Timeout,\nElementNotVisibleException,\nElementNotSelectableException,\n" \ "NoSuchElementException"