mirror of
				https://github.com/Telecominfraproject/wlan-testing.git
				synced 2025-11-04 12:57:55 +00:00 
			
		
		
		
	Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com> Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>
		
			
				
	
	
		
			3631 lines
		
	
	
		
			158 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			3631 lines
		
	
	
		
			158 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# !/usr/local/lib64/python3.8
 | 
						|
"""
 | 
						|
    Controller Library
 | 
						|
        1. controller_data/sdk_base_url
 | 
						|
        2. login credentials
 | 
						|
"""
 | 
						|
from ast import Str
 | 
						|
from logging import exception
 | 
						|
import unittest
 | 
						|
import warnings
 | 
						|
from _pytest.outcomes import fail
 | 
						|
from perfecto.test import TestResultFactory
 | 
						|
import pytest
 | 
						|
import sys
 | 
						|
import time
 | 
						|
from selenium.common.exceptions import NoSuchElementException, TimeoutException
 | 
						|
from selenium.webdriver.common.by import By
 | 
						|
from selenium.common.exceptions import NoSuchElementException
 | 
						|
from selenium.webdriver.support.ui import WebDriverWait
 | 
						|
from appium.webdriver.common.mobileby import MobileBy
 | 
						|
from selenium.webdriver.support import expected_conditions as EC
 | 
						|
import allure
 | 
						|
 | 
						|
 | 
						|
def openApp(appName, setup_perfectoMobile):
 | 
						|
    setup_perfectoMobile[1].step_start("Opening App: " + appName)
 | 
						|
    params = {'identifier': appName}
 | 
						|
    # Open/Close/Open Action is performed to ensure the app is back to its Original Settings
 | 
						|
    setup_perfectoMobile[0].execute_script('mobile:application:open', params)
 | 
						|
    setup_perfectoMobile[0].execute_script('mobile:application:close', params)
 | 
						|
    setup_perfectoMobile[0].execute_script('mobile:application:open', params)
 | 
						|
 | 
						|
 | 
						|
def scrollDown(setup_perfectoMobile):
 | 
						|
    print("Scroll Down")
 | 
						|
    setup_perfectoMobile[1].step_start("Scroll Down")
 | 
						|
    params2 = {}
 | 
						|
    params2["start"] = "50%,90%"
 | 
						|
    params2["end"] = "50%,20%"
 | 
						|
    params2["duration"] = "4"
 | 
						|
    # time.sleep(2)
 | 
						|
    setup_perfectoMobile[0].execute_script('mobile:touch:swipe', params2)
 | 
						|
    time.sleep(3)
 | 
						|
 | 
						|
 | 
						|
def closeApp(appName, setup_perfectoMobile):
 | 
						|
    #print("Closing App.." + appName)
 | 
						|
    setup_perfectoMobile[1].step_start("Closing App: " + appName)
 | 
						|
    params = {'identifier': appName}
 | 
						|
    setup_perfectoMobile[0].execute_script('mobile:application:close', params)
 | 
						|
 | 
						|
 | 
						|
def rebootPhone(setup_perfectoMobile):
 | 
						|
    setup_perfectoMobile[1].step_start("Rebooting Phone...")
 | 
						|
    params = {}
 | 
						|
    setup_perfectoMobile[0].execute_script('mobile:handset:reboot', params)
 | 
						|
 | 
						|
 | 
						|
def set_APconnMobileDevice_iOS(request, WifiNameSSID, WifiPass, setup_perfectoMobile, connData):
 | 
						|
    consoleOutput = ""
 | 
						|
 | 
						|
    print("\n-------------------------------------")
 | 
						|
    print("Select Wifi/AccessPoint Connection")
 | 
						|
    print("-------------------------------------")
 | 
						|
 | 
						|
    reportFlag = True
 | 
						|
 | 
						|
    print("Verifying Wifi/AP Connection Details....")
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    report.step_start("Switching Driver Context")
 | 
						|
    print("Switching Context to Native")
 | 
						|
    # contexts = driver.contexts
 | 
						|
    # print(contexts)
 | 
						|
    driver.switch_to.context('NATIVE_APP')
 | 
						|
    # driver.switch_to.context(contexts[0])
 | 
						|
 | 
						|
    print(WifiNameSSID)
 | 
						|
    report.step_start("Set Wifi Network to " + WifiNameSSID)
 | 
						|
 | 
						|
    openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
    try:
 | 
						|
        print("Verifying Connected Wifi Connection")
 | 
						|
        report.step_start("Verifying Connected Wifi Connection")
 | 
						|
        element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']/XCUIElementTypeStaticText[2]")
 | 
						|
        Wifi_AP_Name = element.text
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Exception: Verify Xpath - UpdateXpath")
 | 
						|
 | 
						|
 | 
						|
    if Wifi_AP_Name.__eq__(WifiNameSSID):
 | 
						|
        print("Wifi Name Matches - Already Connected To: " + Wifi_AP_Name)
 | 
						|
 | 
						|
 | 
						|
        #Verify if Ap is connected with Wifi
 | 
						|
        report.step_start("Verify Wifi Connection Status..")
 | 
						|
        #print("Click Wifi Connection..")
 | 
						|
        element.click()
 | 
						|
 | 
						|
        # Verifies if AP is connected to Wifi status
 | 
						|
        # print("Verify Wifi Connection Status..")
 | 
						|
        try:
 | 
						|
            report.step_start("Verify Wifi Connected Status")
 | 
						|
            WifiXpath = "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeStaticText[@label='" + Wifi_AP_Name + "']"
 | 
						|
            elementWifName = driver.find_element_by_xpath(WifiXpath)
 | 
						|
        except NoSuchElementException:
 | 
						|
            reportFlag = False
 | 
						|
            assert reportFlag
 | 
						|
 | 
						|
 | 
						|
        print("Checking Internet Connection Error..")
 | 
						|
        report.step_start("Checking Internet Connection Error..")
 | 
						|
 | 
						|
        try:
 | 
						|
            driver.implicitly_wait(5)
 | 
						|
            # WifiInternetErrMsg = driver.find_element_by_xpath("//*[@label='No Internet Connection']").text
 | 
						|
            NoInternetConnectionMsg = driver.find_element_by_xpath("//*[@label='No Internet Connection']")
 | 
						|
        except Exception as e:
 | 
						|
            print("No Error with Wifi-AP Connection: " + Wifi_AP_Name)
 | 
						|
 | 
						|
    else:
 | 
						|
        print("Selecting Wifi: " + WifiNameSSID)
 | 
						|
 | 
						|
        report.step_start("Selecting Wifi...: " + WifiNameSSID)
 | 
						|
        element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']/XCUIElementTypeStaticText[2]")
 | 
						|
        element.click()
 | 
						|
        try:
 | 
						|
            wifiXpath2 = WebDriverWait(driver, 30).until(
 | 
						|
                EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='" + WifiNameSSID + "']")))
 | 
						|
            wifiXpath2.click()
 | 
						|
        except Exception as e:
 | 
						|
            print("Exception on Selecting Wifi Network.  Please check wifi Name or signal")
 | 
						|
            request.config.cache.set(key="SelectingWifiFailed", value=str(e))
 | 
						|
            # allure.attach(name="Raj", body="hello world")
 | 
						|
            assert False
 | 
						|
        # Set password if Needed
 | 
						|
        try:
 | 
						|
            wifiPassword = driver.find_element_by_xpath("//*[@label='Password']")
 | 
						|
            wifiPassword.send_keys(WifiPass)
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("Enter Password Page Not Loaded")
 | 
						|
 | 
						|
        try:
 | 
						|
            joinBTN = driver.find_element_by_xpath("//*[@label='Join']")
 | 
						|
            joinBTN.click()
 | 
						|
        except Exception as e:
 | 
						|
            print("Join Button Not Enabled...Password may not be needed")
 | 
						|
 | 
						|
        try:
 | 
						|
            WifiInternetErrMsg2 = WebDriverWait(driver, 30).until(
 | 
						|
                EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='No Internet Connection']")))
 | 
						|
            # = driver.find_element_by_xpath("//*[@label='No Internet Connection']").text
 | 
						|
            reportFlag = False
 | 
						|
        except Exception as e:
 | 
						|
            reportFlag = True
 | 
						|
            print("No Wifi-AP Error Internet Error: " + WifiNameSSID)
 | 
						|
            # Need to add Wait for Selected Wifi Xpath
 | 
						|
            time.sleep(3)
 | 
						|
    return reportFlag
 | 
						|
 | 
						|
 | 
						|
def Toggle_AirplaneMode_iOS(request, setup_perfectoMobile, connData):
 | 
						|
    print("\n-----------------------")
 | 
						|
    print("Toggle Airplane Mode")
 | 
						|
    print("-----------------------")
 | 
						|
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
    currentResult = True
 | 
						|
 | 
						|
    # Open Settings Application
 | 
						|
    openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
    # Toggle Airplane Mode
 | 
						|
    print("Toggle Airplane Mode..")
 | 
						|
    report.step_start("Toggle Airplane Mode")
 | 
						|
    try:
 | 
						|
        AirplaneMode = driver.find_element_by_xpath("//XCUIElementTypeSwitch[@label='Airplane Mode']")
 | 
						|
        # Toggle Airplane Mode
 | 
						|
        AirplaneMode.click()
 | 
						|
 | 
						|
        # Verify Cellular Mode Text
 | 
						|
        report.step_start("Verify Cellular Mode")
 | 
						|
        try:
 | 
						|
            CellularMsgEle = driver.find_element_by_xpath("//*[@name='Airplane Mode' and @value='Airplane Mode']")
 | 
						|
            # ssertEqual(CellularMsgEle.text, "Airplane Mode", "Airplane Mode Not Triggerd")
 | 
						|
            print("Verify Cellular Mode Text: Airplane Mode Success")
 | 
						|
        except NoSuchElementException:
 | 
						|
            currentResult = False
 | 
						|
            print("Cellular Mode Not in Airplane Mode: ERROR")
 | 
						|
 | 
						|
 | 
						|
        AirplaneMode.click()
 | 
						|
    except NoSuchElementException:
 | 
						|
        currentResult = False
 | 
						|
        print("Airplane Wifi Button not loaded...")
 | 
						|
 | 
						|
 | 
						|
    report.step_start("Verify No Sim Card Installed Msg Popup")
 | 
						|
    print("Verify No Sim Card Installed Msg Popup..")
 | 
						|
    try:
 | 
						|
        NoSimCardErrorMsg = driver.find_element_by_xpath("//*[@value='No SIM Card Installed']")
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("No Sim Card AlertMsg")
 | 
						|
 | 
						|
 | 
						|
    print("Click ok on No Sim Card Msg Popup..")
 | 
						|
    report.step_start("Click ok on No Sim Card Msg Popup")
 | 
						|
    try:
 | 
						|
        NoSimCardErrorMsgOK = driver.find_element_by_xpath("//*[@label='OK']")
 | 
						|
        NoSimCardErrorMsgOK.click()
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("No Sim Card AlertMsg")
 | 
						|
 | 
						|
    return currentResult
 | 
						|
 | 
						|
 | 
						|
def verify_APconnMobileDevice_iOS(request, WifiName, setup_perfectoMobile, connData):
 | 
						|
    print("\n-----------------------")
 | 
						|
    print("Verify Connected Wifi Mode")
 | 
						|
    print("-----------------------")
 | 
						|
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    report.step_start("Verifying WifiName: " + WifiName)
 | 
						|
 | 
						|
    # Refresh Settings Application
 | 
						|
    openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
    # Verifies if AP is connected to Wifi status
 | 
						|
    try:
 | 
						|
        print("Get Connected Wifi Name")
 | 
						|
        report.step_start("Get Connected Wifi Name")
 | 
						|
 | 
						|
        element = WebDriverWait(driver, 45).until(EC.presence_of_element_located((MobileBy.XPATH, "//XCUIElementTypeCell[@name='Wi-Fi']/XCUIElementTypeStaticText[2]")))
 | 
						|
        #element = driver.find_element_by_xpath("")
 | 
						|
 | 
						|
        element.click()
 | 
						|
 | 
						|
    except Exception as e:
 | 
						|
        print("SSID Not Connected Within allocated Time: " + WifiName)
 | 
						|
        report.step_start("SSID Not Connected: " + WifiName)
 | 
						|
        request.config.cache.set(key="SelectingWifiFailed", value=str(e))
 | 
						|
        reportFlag = False
 | 
						|
        assert reportFlag
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    try:
 | 
						|
        print("Waiting for Auto Connection to: " + WifiName)
 | 
						|
        report.step_start("Waiting for Auto Connection to: " + WifiName)
 | 
						|
 | 
						|
        selectedWifiNetwork = "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeStaticText[@label='"+ WifiName + "']/parent::*/XCUIElementTypeButton[@label='More Info']"
 | 
						|
        passPointWifi = WebDriverWait(driver, 30).until(EC.presence_of_element_located((MobileBy.XPATH, selectedWifiNetwork)))
 | 
						|
    except Exception as e:
 | 
						|
        #Toggle Wifi Mode
 | 
						|
        Toggle_WifiMode_iOS(request, setup_perfectoMobile, connData)
 | 
						|
        time.sleep(15)
 | 
						|
 | 
						|
        try:
 | 
						|
            print("Waiting for Auto Connection After Toggling Wifi: " + WifiName)
 | 
						|
            selectedWifiNetwork2 = "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeStaticText[@label='" + WifiName + "']/parent::*/XCUIElementTypeButton[@label='More Info']"
 | 
						|
            passPointWifi = WebDriverWait(driver, 30).until(
 | 
						|
                EC.presence_of_element_located((MobileBy.XPATH, selectedWifiNetwork2)))
 | 
						|
        except Exception as e:
 | 
						|
            print("SSID Not Connected Within allocated Time: " + WifiName)
 | 
						|
            report.step_start("SSID Not Connected: " + WifiName)
 | 
						|
            request.config.cache.set(key="SelectingWifiFailed", value=str(e))
 | 
						|
            reportFlag = False
 | 
						|
            assert reportFlag
 | 
						|
 | 
						|
    return True
 | 
						|
 | 
						|
 | 
						|
def ForgetWifiConnection(request, setup_perfectoMobile, wifiName, connData):
 | 
						|
    print("\n-----------------------------")
 | 
						|
    print("Forget Wifi/AP Connection")
 | 
						|
    print("-----------------------------")
 | 
						|
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    report.step_start("Switching Driver Context")
 | 
						|
    print("Switching Context to Native")
 | 
						|
    driver.switch_to.context('NATIVE_APP')
 | 
						|
    # contexts = driver.contexts
 | 
						|
    # print(contexts)
 | 
						|
 | 
						|
    report.step_start("Forget Existing Wifi")
 | 
						|
    openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
    try:
 | 
						|
 | 
						|
        report.step_start("Verifying Existing Connected Wifi Connection")
 | 
						|
        element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']/XCUIElementTypeStaticText[2]")
 | 
						|
        Wifi_AP_Name = element.text
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Exception: Verify Xpath - UpdateXpath")
 | 
						|
 | 
						|
    if Wifi_AP_Name.__eq__(wifiName):
 | 
						|
        print("Wifi Name Matches Connected To: " + Wifi_AP_Name)
 | 
						|
        element.click()
 | 
						|
 | 
						|
        print("More Info on Wifi: " + Wifi_AP_Name)
 | 
						|
        report.step_start("Click on More Info on Wifi")
 | 
						|
        WifiXpathMoreInfo = "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeStaticText[@label='" + Wifi_AP_Name + "']/parent::*/XCUIElementTypeButton[@label='More Info']"
 | 
						|
        elementMoreInfo = driver.find_element_by_xpath(WifiXpathMoreInfo)
 | 
						|
        elementMoreInfo.click()
 | 
						|
 | 
						|
        print("Forget Wifi Network " + Wifi_AP_Name)
 | 
						|
        report.step_start("Forget Wifi Network")
 | 
						|
        WifiXpathForgetWifi = "//*[@label='Forget This Network']"
 | 
						|
        elementforgetWifi = driver.find_element_by_xpath(WifiXpathForgetWifi)
 | 
						|
        elementforgetWifi.click()
 | 
						|
 | 
						|
        print("Forget Wifi PopUp: " + Wifi_AP_Name)
 | 
						|
        report.step_start("Forget Wifi Network PopUp Confirm")
 | 
						|
        WifiXpathForgetWifi = "//*[@label='Forget']"
 | 
						|
        elementforgetWifi = driver.find_element_by_xpath(WifiXpathForgetWifi)
 | 
						|
        elementforgetWifi.click()
 | 
						|
 | 
						|
    else:
 | 
						|
        print("Connected To: " + Wifi_AP_Name)
 | 
						|
        print("Initial Wifi: " + wifiName)
 | 
						|
        element.click()
 | 
						|
 | 
						|
        try:
 | 
						|
            report.step_start("Click on More Info on Wifi")
 | 
						|
            WifiXpathMoreInfo = "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeStaticText[@label='" + wifiName + "']/parent::*/XCUIElementTypeButton[@label='More Info']"
 | 
						|
            elementMoreInfo = driver.find_element_by_xpath(WifiXpathMoreInfo)
 | 
						|
            elementMoreInfo.click()
 | 
						|
 | 
						|
            print("Forget Wifi Network " + wifiName)
 | 
						|
            report.step_start("Forget Wifi Network")
 | 
						|
            WifiXpathForgetWifi = "//*[@label='Forget This Network']"
 | 
						|
            elementforgetWifi = driver.find_element_by_xpath(WifiXpathForgetWifi)
 | 
						|
            elementforgetWifi.click()
 | 
						|
 | 
						|
            report.step_start("Confirm Forget Wifi Network")
 | 
						|
            WifiXpathForgetWifi = "//*[@label='Forget']"
 | 
						|
            elementforgetWifi = driver.find_element_by_xpath(WifiXpathForgetWifi)
 | 
						|
            elementforgetWifi.click()
 | 
						|
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("Initial Wifi Not Selected: " + wifiName)
 | 
						|
 | 
						|
 | 
						|
def Toggle_WifiMode_iOS(request, setup_perfectoMobile, connData):
 | 
						|
    print("\n-----------------------")
 | 
						|
    print("Toggle Wifi Mode")
 | 
						|
    print("-----------------------")
 | 
						|
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    report.step_start("Toggle Wifi Mode")
 | 
						|
    print("Toggle Wifi Mode..")
 | 
						|
    try:
 | 
						|
        print("Disable Wifi Radio Btn")
 | 
						|
        report.step_start("Disable Wifi Radio Btn")
 | 
						|
        WifiMode = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
 | 
						|
        # Toggle Wifi Mode
 | 
						|
        WifiMode.click()
 | 
						|
        time.sleep(5)
 | 
						|
        # Verify Radio Button Mode
 | 
						|
        try:
 | 
						|
            print("Enable Wifi Radio Btn")
 | 
						|
            report.step_start("Enable Wifi Radio Btn")
 | 
						|
            WifiDissconnected = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
            # self.assertEqual(WifiDissconnected.text, "Airplane Mode", "Airplane Mode Not Triggerd")
 | 
						|
            print("Wifi Radio Button Toggled to Disable")
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("Wifi Radio Button Not Disabled...")
 | 
						|
 | 
						|
 | 
						|
        WifiDissconnected.click()
 | 
						|
        print("Wifi Radio Button Toggled to Enabled")
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Airplane Wifi Button not loaded...")
 | 
						|
 | 
						|
 | 
						|
def get_WifiIPAddress_iOS(request, setup_perfectoMobile, connData, wifiName):
 | 
						|
    print("\n------------------------------------")
 | 
						|
    print("Get Wifi IP Address IOS")
 | 
						|
    print("--------------------------------------")
 | 
						|
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
    try:
 | 
						|
 | 
						|
        report.step_start("Loading Wifi Page")
 | 
						|
        element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']/XCUIElementTypeStaticText[2]")
 | 
						|
        element.click()
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Exception: Verify Xpath - unable to click on Wifi")
 | 
						|
 | 
						|
    report.step_start("Wifi Page")
 | 
						|
    WifiXpath = "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeStaticText[@label='" + wifiName + "']"
 | 
						|
    elementWifName = driver.find_element_by_xpath(WifiXpath)
 | 
						|
 | 
						|
    print("Checking Internet Connection Error...")
 | 
						|
    report.step_start("Checking Internet Connection Error..")
 | 
						|
 | 
						|
    try:
 | 
						|
        WifiInternetErrMsg = driver.find_element_by_xpath("//*[@label='No Internet Connection']").text
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Wifi Connected without any errors: " + wifiName)
 | 
						|
 | 
						|
    try:
 | 
						|
 | 
						|
        WifiInternetInfo=driver.find_element_by_xpath("(//XCUIElementTypeButton[@label='More Info'])[1]")
 | 
						|
 | 
						|
        WifiInternetInfo.click()
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Wifi-AP Connected Successfully: " + wifiName)
 | 
						|
 | 
						|
    try:
 | 
						|
 | 
						|
        WifiIPaddress= driver.find_element_by_xpath("(//*[@label='Router']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
 | 
						|
        return WifiIPaddress
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Wifi-AP Connected Successfully: " + wifiName)
 | 
						|
 | 
						|
    return None
 | 
						|
 | 
						|
 | 
						|
def ping_deftapps_iOS(setup_perfectoMobile, AP_IPaddress):
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    report.step_start("Pinging deftapps....")
 | 
						|
    try:
 | 
						|
        pingHost = "//*[@value='<Hostname or IP address>']"
 | 
						|
        element2 = driver.find_element_by_xpath(pingHost)
 | 
						|
        element2.clear()
 | 
						|
        # element2.send_keys(AP_IPaddress)
 | 
						|
        element2.send_keys("8.8.8.8")
 | 
						|
 | 
						|
        # Ping Enable
 | 
						|
        report.step_start("Pingin Host")
 | 
						|
        print("Pingin Host..")
 | 
						|
        element3 = driver.find_element_by_xpath("//*[@label='go']")
 | 
						|
        element3.click()
 | 
						|
 | 
						|
        time.sleep(10)
 | 
						|
 | 
						|
        # handle any popup
 | 
						|
 | 
						|
        report.step_start("Stop Ping Host")
 | 
						|
        print("Stop Ping Host..")
 | 
						|
        element4 = driver.find_element_by_xpath("//*[@label='Stop']")
 | 
						|
        element4.click()
 | 
						|
 | 
						|
        # /* Check Packet Loss */
 | 
						|
        report.step_start("Verifying Packet Loss..")
 | 
						|
        print("Verifying Packet Loss..")
 | 
						|
        try:
 | 
						|
            element5 = driver.find_element_by_xpath("//XCUIElementTypeStaticText[@label='0']")
 | 
						|
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("No Packet Loss Detected 1st Attempt")
 | 
						|
 | 
						|
        report.step_start("Verifying Packet Sent..")
 | 
						|
        print("Verifying Packet Sent..")
 | 
						|
        try:
 | 
						|
 | 
						|
            packetSent = driver.find_element_by_xpath("//XCUIElementTypeStaticText[@label='Sent']/parent::*/XCUIElementTypeStaticText[2]").text
 | 
						|
            #assertEqual(element5.text, "0", "Packet Loss Exist, Please Check Device")
 | 
						|
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("-------Exception: Packet Sent Error, check object ID")
 | 
						|
 | 
						|
        report.step_start("Verifying Packet Received..")
 | 
						|
        print("Verifying Packet Received..")
 | 
						|
        try:
 | 
						|
 | 
						|
            packetReceived = driver.find_element_by_xpath("//XCUIElementTypeStaticText[@label='Received']/parent::*/XCUIElementTypeStaticText[2]").text
 | 
						|
            #assertEqual(element5.text, "0", "Packet Loss Exist, Please Check Device")
 | 
						|
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("-------Exception: Packet Sent Error, check object ID")
 | 
						|
 | 
						|
        print("Total Packet Sent: " + packetSent + " Packed Recieved: " + packetReceived)
 | 
						|
 | 
						|
        # Also Check #Sendto: No route to host
 | 
						|
        print("Verifying No route to host Error Msg....")
 | 
						|
        report.step_start("Verifying No route to host Error Msg..")
 | 
						|
        try:
 | 
						|
 | 
						|
            element7 = driver.find_element_by_xpath("(//XCUIElementTypeStaticText[@label='Sendto: No route to host'])[2]")
 | 
						|
 | 
						|
            print("Packet Loss Detected on AP!!!!!: " + AP_IPaddress)
 | 
						|
            # self.assertNotEqual(element7.text, "Sendto: No route to host", "Packet Loss Exist, Please Check Device AP: " + Wifi_AP_Name)
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("\nNo Packet Loss Detected on AP!!!!!: " + AP_IPaddress)
 | 
						|
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Exception while ping Deft App on iOS")
 | 
						|
 | 
						|
    return None
 | 
						|
 | 
						|
 | 
						|
def tearDown(setup_perfectoMobile):
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    report.step_start("Exception Failure Tear Down....")
 | 
						|
 | 
						|
    try:
 | 
						|
        print(" -- Tear Down --")
 | 
						|
        report.test_stop(TestResultFactory.create_failure)
 | 
						|
        print('Report-Url: ' + report.report_url() + '\n')
 | 
						|
        driver.close()
 | 
						|
    except Exception as e:
 | 
						|
        print(" -- Exception Not Able To close --")
 | 
						|
 | 
						|
        print (e)
 | 
						|
 | 
						|
    finally:
 | 
						|
        try:
 | 
						|
            driver.quit()
 | 
						|
        except Exception as e:
 | 
						|
            print(" -- Exception Not Able To Quit --")
 | 
						|
 | 
						|
            print (e)
 | 
						|
 | 
						|
 | 
						|
def verifyUploadDownloadSpeediOS(request, setup_perfectoMobile, get_APToMobileDevice_data):
 | 
						|
    print("\n-------------------------------------")
 | 
						|
    print("Verify Upload & Download Speed")
 | 
						|
    print("-------------------------------------")
 | 
						|
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
    connData = get_APToMobileDevice_data
 | 
						|
    currentResult = True
 | 
						|
 | 
						|
    contexts = driver.contexts
 | 
						|
    # print("Printing Context")
 | 
						|
    # print(contexts)
 | 
						|
 | 
						|
    driver.switch_to.context('WEBVIEW_1')
 | 
						|
    time.sleep(5)
 | 
						|
    try:
 | 
						|
        print("Launching Safari")
 | 
						|
        report.step_start("Google Home Page")
 | 
						|
        time.sleep(4)
 | 
						|
        driver.get(connData["webURL"])
 | 
						|
        print("Enter Search Text")
 | 
						|
        time.sleep(4)
 | 
						|
        driver.find_element_by_xpath("//*[@class='gLFyf']").send_keys("Internet speed test")
 | 
						|
        time.sleep(4)
 | 
						|
        driver.find_element_by_xpath("//*[@class='aajZCb']//*[@class='nz2CCf']/li[1]/div[1]/div[1]").click()
 | 
						|
    except:
 | 
						|
        try:
 | 
						|
            print("Finding search option")
 | 
						|
            report.step_start("Input For Search")
 | 
						|
            driver.implicitly_wait(4)
 | 
						|
            driver.get(connData["webURL"])
 | 
						|
            print("Enter Search Text")
 | 
						|
            driver.implicitly_wait(4)
 | 
						|
            elementFindTxt = driver.find_element_by_xpath(connData["lblSearch"])
 | 
						|
            elementFindTxt.send_keys("Internet Speed Test")
 | 
						|
        except Exception as e:
 | 
						|
            print("Launching Safari Failed")
 | 
						|
            print(e)
 | 
						|
 | 
						|
    try:
 | 
						|
        print("Click Run Speed Test Button...")
 | 
						|
        report.step_start("Click Run Speed Test Button")
 | 
						|
        driver.implicitly_wait(4)
 | 
						|
        driver.find_element_by_xpath(connData["BtnRunSpeedTest"]).click()
 | 
						|
    except NoSuchElementException:
 | 
						|
        currentResult = False
 | 
						|
        print("Run Speed Test Button element not found", NoSuchElementException)
 | 
						|
        return currentResult
 | 
						|
 | 
						|
    # Get upload/Download Speed
 | 
						|
    try:
 | 
						|
        report.step_start("Get upload/Download Speed")
 | 
						|
        time.sleep(60)
 | 
						|
        downloadMbps = driver.find_element_by_xpath(connData["downloadMbps"])
 | 
						|
        downloadSpeed = downloadMbps.text
 | 
						|
        print("Download: " + downloadSpeed + " Mbps")
 | 
						|
 | 
						|
        time.sleep(30)
 | 
						|
        UploadMbps = driver.find_element_by_xpath(connData["UploadMbps"])
 | 
						|
        uploadSpeed = UploadMbps.text
 | 
						|
        print("Upload: " + uploadSpeed + " Mbps")
 | 
						|
        allure.attach(name="Speed Test logs: ",
 | 
						|
                      body=str("Upload: " + uploadSpeed + " Mbps" + "  Download: " + downloadSpeed + " Mbps"))
 | 
						|
        print("Access Point Verification Completed Successfully")
 | 
						|
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Access Point Verification NOT Completed, checking Connection....")
 | 
						|
        currentResult = False
 | 
						|
 | 
						|
    return currentResult
 | 
						|
 | 
						|
 | 
						|
def downloadInstallOpenRoamingProfile(request, profileDownloadURL, setup_perfectoMobile, get_APToMobileDevice_data):
 | 
						|
    print("\n-------------------------------------")
 | 
						|
    print("Download Open Roaming Profile")
 | 
						|
    print("-------------------------------------")
 | 
						|
 | 
						|
    OpenRoamingWifiName = ""
 | 
						|
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
    connData = get_APToMobileDevice_data
 | 
						|
    currentResult = True
 | 
						|
    contexts = driver.contexts
 | 
						|
    # print("Printing Context")
 | 
						|
    # print(contexts)
 | 
						|
 | 
						|
    driver.switch_to.context('WEBVIEW_1')
 | 
						|
 | 
						|
    print("Launching Safari with OpenRoaming Profile")
 | 
						|
    report.step_start("Open Roaming Download Page")
 | 
						|
    driver.get(profileDownloadURL)
 | 
						|
 | 
						|
    try:
 | 
						|
        print("Accept Popup")
 | 
						|
        report.step_start("Accept Popup")
 | 
						|
        driver.switch_to.context('NATIVE_APP')
 | 
						|
        WebDriverWait(driver, 40).until(EC.alert_is_present(), 'Time out confirmation popup to appear')
 | 
						|
        alert = driver.switch_to.alert
 | 
						|
        alert.accept()
 | 
						|
        print("Alert Accepted")
 | 
						|
    except TimeoutException:
 | 
						|
        print("no alert")
 | 
						|
 | 
						|
 | 
						|
    openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
    try:
 | 
						|
        print("Click on downloaded Profile")
 | 
						|
        report.step_start("Click on downloaded Profile")
 | 
						|
        downloadprofile = driver.find_element_by_xpath("//XCUIElementTypeStaticText[@label='Profile Downloaded']")
 | 
						|
        downloadprofile.click()
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Exception: Click Download Profile Button not showing up in settings")
 | 
						|
 | 
						|
    try:
 | 
						|
        print("Install 1st Confirmation")
 | 
						|
        report.step_start("Install 1st Confirmation")
 | 
						|
        install1stConf = driver.find_element_by_xpath("//XCUIElementTypeButton[@label='Install']")
 | 
						|
        install1stConf.click()
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Exception: Install 1st Confirmation")
 | 
						|
 | 
						|
    # //*[@label="The profile is not signed."]
 | 
						|
    try:
 | 
						|
        print("Install 2nd Confirmation")
 | 
						|
        report.step_start("Install 2nd Confirmation")
 | 
						|
        install2ndConf = driver.find_element_by_xpath("//XCUIElementTypeButton[@label='Install'] ")
 | 
						|
        install2ndConf.click()
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Exception: Install 2nd Confirmation")
 | 
						|
 | 
						|
    try:
 | 
						|
        print("Install 3rd Confirmation")
 | 
						|
        report.step_start("Install 3rd Confirmation")
 | 
						|
        install3rdConf = driver.find_element_by_xpath("//XCUIElementTypeButton[@label='Install']")
 | 
						|
        install3rdConf.click()
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Exception: Install 3rd Confirmation")
 | 
						|
 | 
						|
    try:
 | 
						|
        print("Verify Profile Installed")
 | 
						|
        report.step_start("Verify Profile Installed")
 | 
						|
 | 
						|
        elelSearch2 = WebDriverWait(driver, 30).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Profile Installed']")))
 | 
						|
 | 
						|
        elelSearch2.click()
 | 
						|
    except Exception as e:
 | 
						|
        print("Profile Installed Message Error")
 | 
						|
        request.config.cache.set(key="SelectingWifiFailed", value=str(e))
 | 
						|
        assert False
 | 
						|
 | 
						|
    try:
 | 
						|
        print("Click Done Button")
 | 
						|
        report.step_start("Click Done Button")
 | 
						|
        elelSearch = driver.find_element_by_xpath("//XCUIElementTypeButton[@label='Done']")
 | 
						|
        elelSearch.click()
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Exception: Clicking on Done Button")
 | 
						|
 | 
						|
    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
    print("Switching Context to Webview")
 | 
						|
    driver.switch_to.context('WEBVIEW_1')
 | 
						|
    print("Launching Google to Reset Browser")
 | 
						|
    report.step_start("Launching Google to Reset Browser")
 | 
						|
    driver.get("https://www.google.com")
 | 
						|
 | 
						|
    print("Switching Context to Native")
 | 
						|
    report.step_start("Switching Driver Context Native")
 | 
						|
    driver.switch_to.context('NATIVE_APP')
 | 
						|
 | 
						|
    closeApp(connData["bundleId-iOS-Safari"], setup_perfectoMobile)
 | 
						|
 | 
						|
    # Open Settings Application
 | 
						|
    # openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
   # try:
 | 
						|
   #     print("Verifying OpenRoaming Connected Wifi")
 | 
						|
   #     time.sleep(3)
 | 
						|
    #    report.step_start("Verifying Connected Wifi Name")
 | 
						|
   #     element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']/XCUIElementTypeStaticText[2]")
 | 
						|
  #      OpenRoamingWifiName = element.text
 | 
						|
  #      element.click()
 | 
						|
 | 
						|
 #   except Exception as e:
 | 
						|
  #      OpenRoamingWifiName = "None"
 | 
						|
   #     print("Wifi Not Connected to OpenRoaming Profile: ")
 | 
						|
   #     request.config.cache.set(key="SelectingWifiFailed", value=str(e))
 | 
						|
    #    assert False
 | 
						|
 | 
						|
#   except Exception as e:
 | 
						|
#      OpenRoamingWifiName = "None"
 | 
						|
#     print("Wifi Not Connected to OpenRoaming Profile: ")
 | 
						|
#     request.config.cache.set(key="SelectingWifiFailed", value=str(e))
 | 
						|
#    assert False
 | 
						|
 | 
						|
 | 
						|
# try:
 | 
						|
#  report.step_start("Verify Wifi Connected Status")
 | 
						|
#   WifiXpath = "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeStaticText[@label='"+ OpenRoamingWifiName + "']"
 | 
						|
#   elementWifName = driver.find_element_by_xpath(WifiXpath)
 | 
						|
#    OpenRoamingWifiName = elementWifName.text
 | 
						|
#    print ("Connected to: " + OpenRoamingWifiName)
 | 
						|
# except NoSuchElementException:
 | 
						|
#  OpenRoamingWifiName = "None"
 | 
						|
#  reportFlag = False
 | 
						|
#  assert reportFlag
 | 
						|
 | 
						|
 | 
						|
# return OpenRoamingWifiName
 | 
						|
 | 
						|
def ForgetProfileWifiConnection(request, setup_perfectoMobile, installedProfileSSID, connData):
 | 
						|
    print("\n-----------------------------")
 | 
						|
    print("Forget All Wifi/AP Connection")
 | 
						|
    print("-----------------------------")
 | 
						|
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    report.step_start("Switching Driver Context")
 | 
						|
    print("Switching Context to Native")
 | 
						|
    driver.switch_to.context('NATIVE_APP')
 | 
						|
    contexts = driver.contexts
 | 
						|
    # print(contexts)
 | 
						|
 | 
						|
    report.step_start("Forget Existing Wifi")
 | 
						|
    openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
    try:
 | 
						|
        # Also have to check with Connected Status xpath
 | 
						|
        print("Verifying Connected Wifi Connection")
 | 
						|
        report.step_start("Verifying Existing Connected Wifi Connection")
 | 
						|
        element22 = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']/XCUIElementTypeStaticText[2]")
 | 
						|
        element22.click()
 | 
						|
 | 
						|
        # WifiXpath2= "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeStaticText[2]"
 | 
						|
        WifiXpath2 = WebDriverWait(driver, 20).until(EC.presence_of_element_located(
 | 
						|
            (MobileBy.XPATH, "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeStaticText[2]")))
 | 
						|
        elementMoreInfo = driver.find_element_by_xpath(WifiXpath2)
 | 
						|
        Wifi_AP_Name = elementMoreInfo.text
 | 
						|
        print("Connected to: " + Wifi_AP_Name)
 | 
						|
 | 
						|
    except NoSuchElementException and TimeoutException:
 | 
						|
        Wifi_AP_Name = "None"
 | 
						|
        print("Wifi Not Connected to anything")
 | 
						|
 | 
						|
    if Wifi_AP_Name.__eq__("Not Connected"):
 | 
						|
        print("Not Connected to any wifi")
 | 
						|
 | 
						|
        #deleteOpenRoamingInstalledProfile(request, installedProfileSSID, setup_perfectoMobile, connData)
 | 
						|
    elif Wifi_AP_Name.__eq__("None"):
 | 
						|
        #deleteOpenRoamingInstalledProfile(request, installedProfileSSID, setup_perfectoMobile, connData)
 | 
						|
 | 
						|
        print("Not Connected to any wifi Network/None")
 | 
						|
    elif Wifi_AP_Name.__eq__(installedProfileSSID):
 | 
						|
        deleteOpenRoamingInstalledProfile(request, installedProfileSSID, setup_perfectoMobile, connData)
 | 
						|
    else:
 | 
						|
        try:
 | 
						|
            # element22.click()
 | 
						|
            report.step_start("Click on More Info on Wifi")
 | 
						|
            WifiXpathMoreInfo = "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeStaticText[@label='" + Wifi_AP_Name + "']/parent::*/XCUIElementTypeButton[@label='More Info']"
 | 
						|
            elementMoreInfo = driver.find_element_by_xpath(WifiXpathMoreInfo)
 | 
						|
            elementMoreInfo.click()
 | 
						|
 | 
						|
            print("Forget Wifi Network " + Wifi_AP_Name)
 | 
						|
            report.step_start("Forget Wifi Network")
 | 
						|
            WifiXpathForgetWifi = "//*[@label='Forget This Network']"
 | 
						|
            elementforgetWifi = driver.find_element_by_xpath(WifiXpathForgetWifi)
 | 
						|
            elementforgetWifi.click()
 | 
						|
 | 
						|
            report.step_start("Confirm Forget Wifi Network")
 | 
						|
            WifiXpathForgetWifi = "//*[@label='Forget']"
 | 
						|
            elementforgetWifi = driver.find_element_by_xpath(WifiXpathForgetWifi)
 | 
						|
            elementforgetWifi.click()
 | 
						|
 | 
						|
        except NoSuchElementException:
 | 
						|
 | 
						|
            print("Exception General Menu Not found")
 | 
						|
            assert False
 | 
						|
 | 
						|
 | 
						|
def deleteOpenRoamingInstalledProfile(request, profileName, setup_perfectoMobile, connData):
 | 
						|
    print("\n-----------------------------")
 | 
						|
    print("Delete Open Roaming Profile")
 | 
						|
    print("-----------------------------")
 | 
						|
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    report.step_start("Switching Driver Context")
 | 
						|
    print("Switching Context to Native")
 | 
						|
    driver.switch_to.context('NATIVE_APP')
 | 
						|
    contexts = driver.contexts
 | 
						|
    # print(contexts)
 | 
						|
 | 
						|
    report.step_start("Forget Existing Wifi")
 | 
						|
    openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
    try:
 | 
						|
        print("Click General")
 | 
						|
        report.step_start("Click General")
 | 
						|
        element = driver.find_element_by_xpath("//*[@value='General']")
 | 
						|
        element.click()
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Exception General Menu Not found")
 | 
						|
        assert False
 | 
						|
 | 
						|
    scrollDown(setup_perfectoMobile)
 | 
						|
 | 
						|
    try:
 | 
						|
        print("Verify if any Profile Installed ")
 | 
						|
        try:
 | 
						|
            print("Select Profile ")
 | 
						|
            report.step_start("Select Profile")
 | 
						|
            elementProfile = driver.find_element_by_xpath("//*[@name='ManagedConfigurationList' and @label='Profile']")
 | 
						|
            elementProfile.click()
 | 
						|
        except NoSuchElementException:
 | 
						|
            # Verify Multi Profiles
 | 
						|
            print("Multiple Profiles Maybe Installed, Checking Profiles")
 | 
						|
            try:
 | 
						|
                elementProfiles = driver.find_element_by_xpath(
 | 
						|
                    "//*[@name='ManagedConfigurationList' and @label='Profiles']")
 | 
						|
                elementProfiles.click()
 | 
						|
 | 
						|
                print("Exception Select Profile Button")
 | 
						|
            except NoSuchElementException:
 | 
						|
                print("No Profile Installed")
 | 
						|
 | 
						|
        try:
 | 
						|
            print("Click Configuration Profile ")
 | 
						|
            report.step_start("Click Configuration Profile ")
 | 
						|
            element = driver.find_element_by_xpath("//XCUIElementTypeStaticText[@label='" + profileName + "']")
 | 
						|
            element.click()
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("Exception Click AmeriBand Profile Btn")
 | 
						|
            assert False
 | 
						|
 | 
						|
        try:
 | 
						|
            print("Remove Profile")
 | 
						|
            report.step_start("Remove Profile ")
 | 
						|
            element = driver.find_element_by_xpath("//*[@label='Remove Profile']")
 | 
						|
            element.click()
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("Exception Remove")
 | 
						|
            assert False
 | 
						|
 | 
						|
        try:
 | 
						|
            print("Click Remove Button")
 | 
						|
            report.step_start("Click Remove Button")
 | 
						|
            element = driver.find_element_by_xpath("//*[@label='Remove']")
 | 
						|
            element.click()
 | 
						|
        except Exception as e:
 | 
						|
            print("Exception Remove Button")
 | 
						|
            assert False
 | 
						|
 | 
						|
    except Exception:
 | 
						|
        print("Exception There may be No Profiles Installed")
 | 
						|
        report.step_start("Exception There may be No Profiles Installed")
 | 
						|
 | 
						|
    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
 | 
						|
# To get an IP address
 | 
						|
def get_ip_address_ios(request, WifiName, WifiPass, setup_perfectoMobile, connData):
 | 
						|
    print("\n-------------------------------------")
 | 
						|
    print("Select Wifi/Get IP Address IOS Connection")
 | 
						|
    print("-------------------------------------")
 | 
						|
 | 
						|
    reportFlag = True
 | 
						|
    is_internet = False
 | 
						|
    ip_address_element_text = False
 | 
						|
 | 
						|
    print("Verifying Wifi/AP Connection Details....")
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    report.step_start("Switching Driver Context")
 | 
						|
    print("Switching Context to Native")
 | 
						|
    driver.switch_to.context('NATIVE_APP')
 | 
						|
    # driver.switch_to.context(contexts[0])
 | 
						|
 | 
						|
    report.step_start("Set Wifi Network to " + WifiName)
 | 
						|
    # Open Settings Application
 | 
						|
    openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
    try:
 | 
						|
        time.sleep(2)
 | 
						|
        driver.implicitly_wait(2)
 | 
						|
        try:
 | 
						|
            print("Verifying Connected Wifi Connection")
 | 
						|
            report.step_start("Loading Wifi Page")
 | 
						|
            element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']")
 | 
						|
            element.click()
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("Exception: Verify Xpath - unable to click on Wifi")
 | 
						|
 | 
						|
        time.sleep(2)
 | 
						|
        driver.implicitly_wait(4)
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
        try:
 | 
						|
            get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
            try:
 | 
						|
                if get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0:
 | 
						|
                    get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
                    driver.implicitly_wait(1)
 | 
						|
                    get_wifi_switch_element.click()
 | 
						|
                    driver.implicitly_wait(1)
 | 
						|
                    i = 0
 | 
						|
                    for i in range(5):
 | 
						|
                        try:
 | 
						|
                            get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
 | 
						|
                            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                        except:
 | 
						|
                            print("Switch is OFF")
 | 
						|
 | 
						|
                        if get_wifi_switch_element_text == "1" or get_wifi_switch_element_text == 1:
 | 
						|
                            print("WIFI Switch is ON")
 | 
						|
                            break
 | 
						|
                        else:
 | 
						|
                            try:
 | 
						|
                                get_wifi_switch_element = driver.find_element_by_xpath(
 | 
						|
                                    "//*[@label='Wi-Fi' and @value='0']")
 | 
						|
                                get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                            except:
 | 
						|
                                print("WIFi switch is ON")
 | 
						|
                    if (get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0):
 | 
						|
                        print("switch is still OFF")
 | 
						|
                        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                        return ip_address_element_text, is_internet
 | 
						|
                else:
 | 
						|
                    print("Switch is Still OFF")
 | 
						|
                    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                    return ip_address_element_text, is_internet
 | 
						|
            except:
 | 
						|
                print("No switch element found")
 | 
						|
        except:
 | 
						|
            print("get_wifi_switch_element is ON")
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
 | 
						|
    except:
 | 
						|
        print("Cannot find WIFI element")
 | 
						|
        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
        return ip_address_element_text, is_internet
 | 
						|
 | 
						|
    # ---------------------This is to Forget current connected SSID-------------------------------
 | 
						|
    # ---------------------This to Avoid any popup page from captive portal--------------------#
 | 
						|
 | 
						|
 | 
						|
    try:
 | 
						|
        time.sleep(4)
 | 
						|
        print("getting in to Additional details")
 | 
						|
        report.step_start("Clicking More Info")
 | 
						|
        additional_details_element = driver.find_element_by_xpath("//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")
 | 
						|
        additional_details_element.click()
 | 
						|
        try:
 | 
						|
            time.sleep(2)
 | 
						|
            print("Forget Connected Network")
 | 
						|
            forget_ssid = WebDriverWait(driver, 30).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget This Network']")))
 | 
						|
            forget_ssid.click()
 | 
						|
            print("Forget old ssid")
 | 
						|
            try:
 | 
						|
                time.sleep(2)
 | 
						|
                report.step_start("Forget SSID popup1")
 | 
						|
                forget_ssid_popup = WebDriverWait(driver, 30).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget']")))
 | 
						|
                forget_ssid_popup.click()
 | 
						|
 | 
						|
                print("**alert** Forget SSID popup killed **alert**")
 | 
						|
            except:
 | 
						|
                print("Forget SSID popup not found")
 | 
						|
        except:
 | 
						|
            print("couldn't find forget ssid element")
 | 
						|
    except:
 | 
						|
        print("No connected SSID")
 | 
						|
        try:
 | 
						|
            report.step_start("Unexpected Captive Popup")
 | 
						|
            print("Unexpeceted Captive Poped Up")
 | 
						|
            captive_portal_cancel_element = driver.find_element_by_xpath("//*[@label='Cancel']")
 | 
						|
            captive_portal_cancel_element.click()
 | 
						|
            time.sleep(2)
 | 
						|
            use_other_network_element = driver.find_element_by_xpath("//*[@label='Use Other Network']")
 | 
						|
            use_other_network_element.click()
 | 
						|
            time.sleep(2)
 | 
						|
        except:
 | 
						|
            print("No Captive Portal Popup Found")
 | 
						|
            try:
 | 
						|
                time.sleep(4)
 | 
						|
                print("getting in to Additional details")
 | 
						|
                report.step_start("Clicking More Info")
 | 
						|
                additional_details_element = driver.find_element_by_xpath(
 | 
						|
                    "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")
 | 
						|
                additional_details_element.click()
 | 
						|
                try:
 | 
						|
                    time.sleep(2)
 | 
						|
                    print("Forget Connected Network")
 | 
						|
                    forget_ssid = WebDriverWait(driver, 30).until(
 | 
						|
                        EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget This Network']")))
 | 
						|
                    forget_ssid.click()
 | 
						|
                    print("Forget old ssid")
 | 
						|
                    try:
 | 
						|
                        time.sleep(2)
 | 
						|
                        report.step_start("Forget SSID popup1")
 | 
						|
                        forget_ssid_popup = WebDriverWait(driver, 30).until(
 | 
						|
                            EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget']")))
 | 
						|
                        forget_ssid_popup.click()
 | 
						|
 | 
						|
                        print("**alert** Forget SSID popup killed **alert**")
 | 
						|
                    except:
 | 
						|
                        print("Forget SSID popup not found")
 | 
						|
                except:
 | 
						|
                    print("couldn't find forget ssid element")
 | 
						|
            except:
 | 
						|
                print("No connected SSID")
 | 
						|
 | 
						|
    # ---------------------This is to Forget current connected SSID-------------------------------
 | 
						|
 | 
						|
    # ---------------------To get all available SSID-------------------------------
 | 
						|
    print("Searching for Wifi: " + WifiName)
 | 
						|
    # allure.attach(name= body=str("Searching for Wifi: " + WifiName))
 | 
						|
    time.sleep(2)
 | 
						|
    report.step_start("Searching SSID")
 | 
						|
    print("Selecting Wifi: " + WifiName)
 | 
						|
    ssid_found = False
 | 
						|
    available_ssids = False
 | 
						|
 | 
						|
    try:
 | 
						|
        for check_for_all_ssids in range(12):
 | 
						|
            available_ssids = get_all_available_ssids(driver)
 | 
						|
            allure.attach(name="Available SSIDs in device: ", body=str(available_ssids))
 | 
						|
            try:
 | 
						|
                if (not ssid_Visible(driver, WifiName)) or (WifiName not in available_ssids):
 | 
						|
                    scrollDown(setup_perfectoMobile)
 | 
						|
                    time.sleep(2)
 | 
						|
                else:
 | 
						|
                    try:
 | 
						|
                        driver.implicitly_wait(8)
 | 
						|
                        report.step_start("Selecting SSID To Connect")
 | 
						|
                        ssid_found = True
 | 
						|
                        print(WifiName + " : Found in Device")
 | 
						|
                        wifiSelElement = WebDriverWait(driver, 35).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='" + WifiName + "']")))
 | 
						|
                        print(wifiSelElement)
 | 
						|
                        wifiSelElement.click()
 | 
						|
                        print("Selecting SSID")
 | 
						|
                        break
 | 
						|
                    except:
 | 
						|
                        print("SSID unable to select")
 | 
						|
                        report.step_start("Selecting Unable SSID To Connect")
 | 
						|
                        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                        return ip_address_element_text, is_internet
 | 
						|
 | 
						|
            except:
 | 
						|
                print("couldn't connect to " + WifiName)
 | 
						|
                #request.config.cache.set(key="SelectingWifiFailed", value=str(e))
 | 
						|
                closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                return ip_address_element_text, is_internet
 | 
						|
                pass
 | 
						|
 | 
						|
        if not ssid_found:
 | 
						|
            print("could not found " + WifiName + " in device")
 | 
						|
            closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
            return ip_address_element_text, is_internet
 | 
						|
    except:
 | 
						|
        pass
 | 
						|
    # ---------------------To get all available SSID-------------------------------
 | 
						|
 | 
						|
    # ---------------------This is to Select SSID-------------------------------
 | 
						|
 | 
						|
    # ---------------------This is to Select SSID-------------------------------
 | 
						|
    # ---------------------Set Password-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(5)
 | 
						|
        print("Entering Password")
 | 
						|
        report.step_start("Entering Password")
 | 
						|
        wifiPassword = driver.find_element_by_xpath("//*[@label='Password']")
 | 
						|
        wifiPassword.send_keys(WifiPass)
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Enter Password Page Not Loaded")
 | 
						|
    # ---------------------Set Password-------------------------------
 | 
						|
 | 
						|
    # ---------------------Click on join-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(4)
 | 
						|
        print("Selecting join")
 | 
						|
        report.step_start("Clicking JOIN")
 | 
						|
        joinBTN = driver.find_element_by_xpath("//*[@label='Join']")
 | 
						|
        joinBTN.click()
 | 
						|
    except Exception as e:
 | 
						|
        print("Join Button Not Enabled...Password may not be needed")
 | 
						|
    # ---------------------Click on join-------------------------------
 | 
						|
 | 
						|
    # ---------------------check if internet-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(5)
 | 
						|
        WifiInternetErrMsg2 = driver.find_element_by_xpath("//*[@label='No Internet Connection']")
 | 
						|
        # = driver.find_element_by_xpath("//*[@label='No Internet Connection']").text
 | 
						|
    except Exception as e:
 | 
						|
        is_internet = True
 | 
						|
        print("No Wifi-AP Error Internet Error: " + WifiName)
 | 
						|
        # Need to add Wait for Selected Wifi Xpath
 | 
						|
        # time.sleep(3)
 | 
						|
    # ---------------------check if internet-------------------------------
 | 
						|
 | 
						|
    # ---------------------Additional INFO-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(5)
 | 
						|
        print("Selecting SSID: ", WifiName)
 | 
						|
        report.step_start("Additional details of SSID")
 | 
						|
        additional_details_element = WebDriverWait(driver, 35).until(
 | 
						|
            EC.presence_of_element_located((MobileBy.XPATH,
 | 
						|
                                            "//*[@label='" + WifiName + "']")))
 | 
						|
        # //*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']
 | 
						|
        additional_details_element.click()
 | 
						|
 | 
						|
        try:
 | 
						|
            driver.implicitly_wait(2)
 | 
						|
            report.step_start("Checking SSID Name as Expected")
 | 
						|
            print("Checking SSID Name")
 | 
						|
            ssidname_text = driver.find_element_by_xpath("//*[@label='" + WifiName + "']").text
 | 
						|
            print(ssidname_text)
 | 
						|
            if(ssidname_text == WifiName):
 | 
						|
                print("SSID Matched")
 | 
						|
                allure.attach(name="SSID Matched ", body=str(WifiName))
 | 
						|
            else:
 | 
						|
                print("SSID Not Matched")
 | 
						|
                allure.attach(name="SSID Not Matched ", body=str(WifiName))
 | 
						|
                reportFlag = False
 | 
						|
                assert reportFlag
 | 
						|
        except:
 | 
						|
            print("SSID is not Checked in more Info")
 | 
						|
 | 
						|
        try:
 | 
						|
            report.step_start("Checking WiFi Address")
 | 
						|
            print("Checking WIFI address")
 | 
						|
            # (//*[@label="IP Address"]/parent::*/XCUIElementTypeStaticText)[2]
 | 
						|
            wifi_address_element_text = driver.find_element_by_xpath(
 | 
						|
                "(//*[@label='Wi-Fi Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
            print("wifi_address_element_text: ", wifi_address_element_text)
 | 
						|
            allure.attach(name="Connected SSID WiFi-Address: ", body=str(wifi_address_element_text))
 | 
						|
        except Exception as e:
 | 
						|
            print("WiFi-Address not Found")
 | 
						|
        try:
 | 
						|
            time.sleep(4)
 | 
						|
            report.step_start("Checking IP Address")
 | 
						|
            print("Checking IP address")
 | 
						|
            # (//*[@label="IP Address"]/parent::*/XCUIElementTypeStaticText)[2]
 | 
						|
            ip_address_element_text = driver.find_element_by_xpath(
 | 
						|
                "(//*[@label='IP Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
            print("ip_address_element_text: ", ip_address_element_text)
 | 
						|
        except Exception as e:
 | 
						|
            try:
 | 
						|
                time.sleep(4)
 | 
						|
                print("Scrolling for checking ip address")
 | 
						|
                scrollDown(setup_perfectoMobile)
 | 
						|
                ip_address_element_text = driver.find_element_by_xpath(
 | 
						|
                    "(//*[@label='IP Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
                print("ip_address_element_text: ", ip_address_element_text)
 | 
						|
            except:
 | 
						|
                print("IP Address not Found")
 | 
						|
                request.config.cache.set(key="select IP failed", value=str(e))
 | 
						|
 | 
						|
        try:
 | 
						|
            report.step_start("Forget Network")
 | 
						|
            forget_ssid = WebDriverWait(driver, 30).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget This Network']")))
 | 
						|
            forget_ssid.click()
 | 
						|
            print("Forget old ssid")
 | 
						|
            # time.sleep(2)
 | 
						|
            # driver.implicitly_wait(3)
 | 
						|
            try:
 | 
						|
                report.step_start("Forget Network popup")
 | 
						|
                forget_ssid_popup = WebDriverWait(driver, 30).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget']")))
 | 
						|
                forget_ssid_popup.click()
 | 
						|
            except:
 | 
						|
                print("in popup exception")
 | 
						|
 | 
						|
        except:
 | 
						|
            print("error on ssid element")
 | 
						|
 | 
						|
            # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
        # try:
 | 
						|
        #     get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
 | 
						|
        #     get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
        #     print("switch state is : ", get_wifi_switch_element_text)
 | 
						|
        #     try:
 | 
						|
        #         if get_wifi_switch_element_text == "1" or get_wifi_switch_element_text == 1:
 | 
						|
        #             get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
 | 
						|
        #             driver.implicitly_wait(1)
 | 
						|
        #             get_wifi_switch_element.click()
 | 
						|
        #             driver.implicitly_wait(1)
 | 
						|
        #             i = 0
 | 
						|
        #             for i in range(5):
 | 
						|
        #                 try:
 | 
						|
        #                     get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
        #                     get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
        #                 except:
 | 
						|
        #                     print("switch is ON")
 | 
						|
        #
 | 
						|
        #                 if get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0:
 | 
						|
        #                     print("WIFI Switch is OFF")
 | 
						|
        #                     break
 | 
						|
        #                 else:
 | 
						|
        #                     try:
 | 
						|
        #                         get_wifi_switch_element = driver.find_element_by_xpath(
 | 
						|
        #                             "//*[@label='Wi-Fi' and @value='1']")
 | 
						|
        #                         get_wifi_switch_element.click()
 | 
						|
        #                         get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
        #                     except:
 | 
						|
        #                         print("WIFi switch is OFF")
 | 
						|
        #
 | 
						|
        #         else:
 | 
						|
        #             print("Switch is Still OFF")
 | 
						|
        #     except:
 | 
						|
        #         pass
 | 
						|
        # except:
 | 
						|
        #     print("get_wifi_switch_element is ON")
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
 | 
						|
    except Exception as e:
 | 
						|
        request.config.cache.set(key="select additional info failed", value=str(e))
 | 
						|
    # ---------------------Additional INFO-------------------------------
 | 
						|
 | 
						|
    # --------------------- close app-------------------------------
 | 
						|
    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
    return ip_address_element_text, is_internet
 | 
						|
    # ---------------------close app-------------------------------
 | 
						|
 | 
						|
 | 
						|
# //XCUIElementTypeOther[2]/XCUIElementTypeOther[1]/XCUIElementTypeStaticText
 | 
						|
def get_all_available_ssids(driver):
 | 
						|
    print("\n----------------------------")
 | 
						|
    print("Get All Available SSID")
 | 
						|
    print("------------------------------")
 | 
						|
 | 
						|
    active_ssid_list = []
 | 
						|
    try:
 | 
						|
        time.sleep(2)
 | 
						|
        driver.implicitly_wait(2)
 | 
						|
        elements = driver.find_elements_by_xpath("(//*[@label='More Info']/parent::*/XCUIElementTypeStaticText)")
 | 
						|
        print(len(elements))
 | 
						|
        for i in range(len(elements)):
 | 
						|
            active_ssid_list.append(elements[i].text)
 | 
						|
        print("active_ssid_list: ", active_ssid_list)
 | 
						|
    except:
 | 
						|
        print("No SSIDS available")
 | 
						|
 | 
						|
    return active_ssid_list
 | 
						|
 | 
						|
 | 
						|
# Connect to WIFI
 | 
						|
def wifi_connect(request, WifiName, WifiPass, setup_perfectoMobile, connData):
 | 
						|
    print("\n-------------------------------------")
 | 
						|
    print("Select Wifi/Get IP Address IOS Connection")
 | 
						|
    print("-------------------------------------")
 | 
						|
 | 
						|
    reportFlag = True
 | 
						|
    is_internet = False
 | 
						|
    ip_address_element_text = False
 | 
						|
 | 
						|
    print("Verifying Wifi/AP Connection Details....")
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    report.step_start("Switching Driver Context")
 | 
						|
    print("Switching Context to Native")
 | 
						|
    driver.switch_to.context('NATIVE_APP')
 | 
						|
    # driver.switch_to.context(contexts[0])
 | 
						|
 | 
						|
    report.step_start("Set Wifi Network to " + WifiName)
 | 
						|
    # Open Settings Application
 | 
						|
    openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
    try:
 | 
						|
        time.sleep(2)
 | 
						|
        driver.implicitly_wait(2)
 | 
						|
        try:
 | 
						|
            print("Verifying Connected Wifi Connection")
 | 
						|
            report.step_start("Loading Wifi Page")
 | 
						|
            element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']")
 | 
						|
            element.click()
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("Exception: Verify Xpath - unable to click on Wifi")
 | 
						|
 | 
						|
        time.sleep(2)
 | 
						|
        driver.implicitly_wait(4)
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
        try:
 | 
						|
            get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
            try:
 | 
						|
                if get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0:
 | 
						|
                    get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
                    driver.implicitly_wait(1)
 | 
						|
                    get_wifi_switch_element.click()
 | 
						|
                    driver.implicitly_wait(1)
 | 
						|
                    i = 0
 | 
						|
                    for i in range(5):
 | 
						|
                        try:
 | 
						|
                            get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
 | 
						|
                            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                        except:
 | 
						|
                            print("Switch is OFF")
 | 
						|
 | 
						|
                        if get_wifi_switch_element_text == "1" or get_wifi_switch_element_text == 1:
 | 
						|
                            print("WIFI Switch is ON")
 | 
						|
                            break
 | 
						|
                        else:
 | 
						|
                            try:
 | 
						|
                                get_wifi_switch_element = driver.find_element_by_xpath(
 | 
						|
                                    "//*[@label='Wi-Fi' and @value='0']")
 | 
						|
                                get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                            except:
 | 
						|
                                print("WIFi switch is ON")
 | 
						|
                    if (get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0):
 | 
						|
                        print("switch is still OFF")
 | 
						|
                        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                        return ip_address_element_text, is_internet
 | 
						|
                else:
 | 
						|
                    print("Switch is Still OFF")
 | 
						|
                    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                    return ip_address_element_text, is_internet
 | 
						|
            except:
 | 
						|
                print("No switch element found")
 | 
						|
        except:
 | 
						|
            print("get_wifi_switch_element is ON")
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
 | 
						|
    except:
 | 
						|
        print("Cannot find WIFI element")
 | 
						|
        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
        return ip_address_element_text, is_internet
 | 
						|
 | 
						|
    # ---------------------This is to Forget current connected SSID-------------------------------
 | 
						|
    # ---------------------This to Avoid any popup page from captive portal--------------------#
 | 
						|
 | 
						|
    try:
 | 
						|
        time.sleep(4)
 | 
						|
        print("getting in to Additional details")
 | 
						|
        report.step_start("Clicking More Info")
 | 
						|
        additional_details_element = driver.find_element_by_xpath(
 | 
						|
            "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")
 | 
						|
        additional_details_element.click()
 | 
						|
        try:
 | 
						|
            time.sleep(2)
 | 
						|
            print("Forget Connected Network")
 | 
						|
            forget_ssid = WebDriverWait(driver, 30).until(
 | 
						|
                EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget This Network']")))
 | 
						|
            forget_ssid.click()
 | 
						|
            print("Forget old ssid")
 | 
						|
            try:
 | 
						|
                time.sleep(2)
 | 
						|
                report.step_start("Forget SSID popup1")
 | 
						|
                forget_ssid_popup = WebDriverWait(driver, 30).until(
 | 
						|
                    EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget']")))
 | 
						|
                forget_ssid_popup.click()
 | 
						|
 | 
						|
                print("**alert** Forget SSID popup killed **alert**")
 | 
						|
            except:
 | 
						|
                print("Forget SSID popup not found")
 | 
						|
        except:
 | 
						|
            print("couldn't find forget ssid element")
 | 
						|
    except:
 | 
						|
        print("No connected SSID")
 | 
						|
        try:
 | 
						|
            report.step_start("Unexpected Captive Popup")
 | 
						|
            print("Unexpeceted Captive Poped Up")
 | 
						|
            captive_portal_cancel_element = driver.find_element_by_xpath("//*[@label='Cancel']")
 | 
						|
            captive_portal_cancel_element.click()
 | 
						|
            time.sleep(2)
 | 
						|
            use_other_network_element = driver.find_element_by_xpath("//*[@label='Use Other Network']")
 | 
						|
            use_other_network_element.click()
 | 
						|
            time.sleep(2)
 | 
						|
        except:
 | 
						|
            print("No Captive Portal Popup Found")
 | 
						|
            try:
 | 
						|
                time.sleep(4)
 | 
						|
                print("getting in to Additional details")
 | 
						|
                report.step_start("Clicking More Info")
 | 
						|
                additional_details_element = driver.find_element_by_xpath(
 | 
						|
                    "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")
 | 
						|
                additional_details_element.click()
 | 
						|
                try:
 | 
						|
                    time.sleep(2)
 | 
						|
                    print("Forget Connected Network")
 | 
						|
                    forget_ssid = WebDriverWait(driver, 30).until(
 | 
						|
                        EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget This Network']")))
 | 
						|
                    forget_ssid.click()
 | 
						|
                    print("Forget old ssid")
 | 
						|
                    try:
 | 
						|
                        time.sleep(2)
 | 
						|
                        report.step_start("Forget SSID popup1")
 | 
						|
                        forget_ssid_popup = WebDriverWait(driver, 30).until(
 | 
						|
                            EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget']")))
 | 
						|
                        forget_ssid_popup.click()
 | 
						|
 | 
						|
                        print("**alert** Forget SSID popup killed **alert**")
 | 
						|
                    except:
 | 
						|
                        print("Forget SSID popup not found")
 | 
						|
                except:
 | 
						|
                    print("couldn't find forget ssid element")
 | 
						|
            except:
 | 
						|
                print("No connected SSID")
 | 
						|
 | 
						|
    # ---------------------This is to Forget current connected SSID-------------------------------
 | 
						|
 | 
						|
    # ---------------------To get all available SSID-------------------------------
 | 
						|
    print("Searching for Wifi: " + WifiName)
 | 
						|
    # allure.attach(name= body=str("Searching for Wifi: " + WifiName))
 | 
						|
    time.sleep(2)
 | 
						|
    report.step_start("Searching SSID")
 | 
						|
    print("Selecting Wifi: " + WifiName)
 | 
						|
    ssid_found = False
 | 
						|
    available_ssids = False
 | 
						|
 | 
						|
    try:
 | 
						|
        for check_for_all_ssids in range(12):
 | 
						|
            available_ssids = get_all_available_ssids(driver)
 | 
						|
            allure.attach(name="Available SSIDs in device: ", body=str(available_ssids))
 | 
						|
            try:
 | 
						|
                if (not ssid_Visible(driver, WifiName)) or (WifiName not in available_ssids):
 | 
						|
                    scrollDown(setup_perfectoMobile)
 | 
						|
                    time.sleep(2)
 | 
						|
                else:
 | 
						|
                    try:
 | 
						|
                        driver.implicitly_wait(8)
 | 
						|
                        report.step_start("Selecting SSID To Connect")
 | 
						|
                        ssid_found = True
 | 
						|
                        print(WifiName + " : Found in Device")
 | 
						|
                        wifiSelElement = WebDriverWait(driver, 35).until(
 | 
						|
                            EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='" + WifiName + "']")))
 | 
						|
                        print(wifiSelElement)
 | 
						|
                        wifiSelElement.click()
 | 
						|
                        print("Selecting SSID")
 | 
						|
                        break
 | 
						|
                    except:
 | 
						|
                        print("SSID unable to select")
 | 
						|
                        report.step_start("Selecting Unable SSID To Connect")
 | 
						|
                        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                        return ip_address_element_text, is_internet
 | 
						|
 | 
						|
            except:
 | 
						|
                print("couldn't connect to " + WifiName)
 | 
						|
                # request.config.cache.set(key="SelectingWifiFailed", value=str(e))
 | 
						|
                closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                return ip_address_element_text, is_internet
 | 
						|
                pass
 | 
						|
 | 
						|
        if not ssid_found:
 | 
						|
            print("could not found " + WifiName + " in device")
 | 
						|
            closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
            return ip_address_element_text, is_internet
 | 
						|
    except:
 | 
						|
        pass
 | 
						|
    # ---------------------To get all available SSID-------------------------------
 | 
						|
 | 
						|
    # ---------------------This is to Select SSID-------------------------------
 | 
						|
 | 
						|
    # ---------------------This is to Select SSID-------------------------------
 | 
						|
    # ---------------------Set Password-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(5)
 | 
						|
        print("Entering Password")
 | 
						|
        report.step_start("Entering Password")
 | 
						|
        wifiPassword = driver.find_element_by_xpath("//*[@label='Password']")
 | 
						|
        wifiPassword.send_keys(WifiPass)
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Enter Password Page Not Loaded")
 | 
						|
    # ---------------------Set Password-------------------------------
 | 
						|
 | 
						|
    # ---------------------Click on join-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(4)
 | 
						|
        print("Selecting join")
 | 
						|
        report.step_start("Clicking JOIN")
 | 
						|
        joinBTN = driver.find_element_by_xpath("//*[@label='Join']")
 | 
						|
        joinBTN.click()
 | 
						|
    except Exception as e:
 | 
						|
        print("Join Button Not Enabled...Password may not be needed")
 | 
						|
    # ---------------------Click on join-------------------------------
 | 
						|
 | 
						|
    # ---------------------check if internet-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(5)
 | 
						|
        WifiInternetErrMsg2 = driver.find_element_by_xpath("//*[@label='No Internet Connection']")
 | 
						|
        # = driver.find_element_by_xpath("//*[@label='No Internet Connection']").text
 | 
						|
    except Exception as e:
 | 
						|
        is_internet = True
 | 
						|
        print("No Wifi-AP Error Internet Error: " + WifiName)
 | 
						|
        # Need to add Wait for Selected Wifi Xpath
 | 
						|
        # time.sleep(3)
 | 
						|
    # ---------------------check if internet-------------------------------
 | 
						|
 | 
						|
    # ---------------------Additional INFO-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(5)
 | 
						|
        print("Selecting SSID: ", WifiName)
 | 
						|
        report.step_start("Additional details of SSID")
 | 
						|
        additional_details_element = WebDriverWait(driver, 35).until(
 | 
						|
            EC.presence_of_element_located((MobileBy.XPATH,
 | 
						|
                                            "//*[@label='" + WifiName + "']")))
 | 
						|
        # //*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']
 | 
						|
        additional_details_element.click()
 | 
						|
 | 
						|
        try:
 | 
						|
            driver.implicitly_wait(2)
 | 
						|
            report.step_start("Checking SSID Name as Expected")
 | 
						|
            print("Checking SSID Name")
 | 
						|
            ssidname_text = driver.find_element_by_xpath("//*[@label='" + WifiName + "']").text
 | 
						|
            print(ssidname_text)
 | 
						|
            if (ssidname_text == WifiName):
 | 
						|
                print("SSID Matched")
 | 
						|
                allure.attach(name="SSID Matched ", body=str(WifiName))
 | 
						|
            else:
 | 
						|
                print("SSID Not Matched")
 | 
						|
                allure.attach(name="SSID Not Matched ", body=str(WifiName))
 | 
						|
                reportFlag = False
 | 
						|
                assert reportFlag
 | 
						|
        except:
 | 
						|
            print("SSID is not Checked in more Info")
 | 
						|
 | 
						|
        try:
 | 
						|
            report.step_start("Checking WiFi Address")
 | 
						|
            print("Checking WIFI address")
 | 
						|
            # (//*[@label="IP Address"]/parent::*/XCUIElementTypeStaticText)[2]
 | 
						|
            wifi_address_element_text = driver.find_element_by_xpath(
 | 
						|
                "(//*[@label='Wi-Fi Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
            print("wifi_address_element_text: ", wifi_address_element_text)
 | 
						|
            allure.attach(name="Connected SSID WiFi-Address: ", body=str(wifi_address_element_text))
 | 
						|
        except Exception as e:
 | 
						|
            print("WiFi-Address not Found")
 | 
						|
        try:
 | 
						|
            time.sleep(4)
 | 
						|
            report.step_start("Checking IP Address")
 | 
						|
            print("Checking IP address")
 | 
						|
            # (//*[@label="IP Address"]/parent::*/XCUIElementTypeStaticText)[2]
 | 
						|
            ip_address_element_text = driver.find_element_by_xpath(
 | 
						|
                "(//*[@label='IP Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
            print("ip_address_element_text: ", ip_address_element_text)
 | 
						|
        except Exception as e:
 | 
						|
            try:
 | 
						|
                time.sleep(4)
 | 
						|
                print("Scrolling for checking ip address")
 | 
						|
                scrollDown(setup_perfectoMobile)
 | 
						|
                ip_address_element_text = driver.find_element_by_xpath(
 | 
						|
                    "(//*[@label='IP Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
                print("ip_address_element_text: ", ip_address_element_text)
 | 
						|
            except:
 | 
						|
                print("IP Address not Found")
 | 
						|
                request.config.cache.set(key="select IP failed", value=str(e))
 | 
						|
 | 
						|
    except Exception as e:
 | 
						|
        request.config.cache.set(key="select additional info failed", value=str(e))
 | 
						|
    # ---------------------Additional INFO-------------------------------
 | 
						|
 | 
						|
    # --------------------- close app-------------------------------
 | 
						|
    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
    return ip_address_element_text, is_internet
 | 
						|
    # ---------------------close app-------------------------------
 | 
						|
 | 
						|
 | 
						|
def expressWifi(request, setup_perfectoMobile, connData):
 | 
						|
    print("\n-------------------------------------")
 | 
						|
    print("Express Wifi Verification")
 | 
						|
    print("-------------------------------------")
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    try:
 | 
						|
        print("Express Wifi Home Page Verification")
 | 
						|
        report.step_start("Express Wifi Home Page Verification")
 | 
						|
        driver.implicitly_wait(2)
 | 
						|
        ExpressWifiBytesLeft = driver.find_element_by_xpath("//*[@label='0KB left']")
 | 
						|
    except NoSuchElementException:
 | 
						|
        # driver.implicitly_wait(25)
 | 
						|
        # Add function to Toggle Wifi if Express Wifi Home Page not Triggerd
 | 
						|
        print("Express Wifi Page Not Logged In - ")
 | 
						|
 | 
						|
    try:
 | 
						|
        print("ExpressWifi Click on Menu Circle")
 | 
						|
        report.step_start("ExpressWifi Click on Menu Circle")
 | 
						|
        ExpressWifiMenu = driver.find_element_by_xpath("//*[@label='⚙️']")
 | 
						|
        ExpressWifiMenu.click()
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("---- Exception ExpressWifi Click on Menu Circle")
 | 
						|
 | 
						|
    try:
 | 
						|
        print("ExpressWifi Click Run Tests!")
 | 
						|
        report.step_start("ExpressWifi Click Run Tests!")
 | 
						|
        ExpressWifiRunTests = driver.find_element_by_xpath("//*[@label='Run Tests!']")
 | 
						|
        ExpressWifiRunTests.click()
 | 
						|
        time.sleep(20)
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Exception ExceptionExpressWifi Click Run Tests!")
 | 
						|
 | 
						|
    try:
 | 
						|
        print("Verify Results: ")
 | 
						|
        report.step_start("Verify Results")
 | 
						|
        ExpressWifiLogMsgCount = driver.find_element_by_xpath(
 | 
						|
            "//*[@label='running test ...']/parent::*/XCUIElementTypeStaticText")
 | 
						|
        ExpressWifiLogMsg = []
 | 
						|
 | 
						|
        for i in range(1, 12):
 | 
						|
            expressWifiOutputMsg = "//*[@label='running test ...']/parent::*/XCUIElementTypeStaticText[" + str(i) + "]"
 | 
						|
            LogOut = driver.find_element_by_xpath(expressWifiOutputMsg)
 | 
						|
            ExpressWifiLogMsg.append(LogOut.text)
 | 
						|
            print("----" + LogOut.text + "\n")
 | 
						|
    # print("ExpressWifiLog: ", ExpressWifiLogMsg)
 | 
						|
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Exception Verify Results")
 | 
						|
 | 
						|
    try:
 | 
						|
        print("ExpressWifi Verify Test Complete Msg")
 | 
						|
        report.step_start("ExpressWifi Verify Test Complete Msg")
 | 
						|
        ExpressWifiRunTests = driver.find_element_by_xpath("//*[contains (@label,'test completed successfully')]")
 | 
						|
        # closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
        return True
 | 
						|
 | 
						|
    except Exception:
 | 
						|
        # closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
        print(" !! ExpressWifi Failure Test Complete Msg")
 | 
						|
        return False
 | 
						|
 | 
						|
        # 2)Settings to Logout
 | 
						|
 | 
						|
 | 
						|
# try:
 | 
						|
#      print("Express Wifi Home Page Verification")
 | 
						|
##      report.step_start("Express Wifi Home Page Verification")
 | 
						|
#      WifiDissconnected = driver.find_element_by_xpath("//XCUIElementTypeImage[@label='settings']")
 | 
						|
 | 
						|
#   except NoSuchElementException:
 | 
						|
#      print("Exception Express Wifi Home Page Verification")
 | 
						|
 | 
						|
#  3)
 | 
						|
# Logout button
 | 
						|
#  //*[@label="Log Out"]
 | 
						|
 | 
						|
# 4) Confirm Logout
 | 
						|
# //*[@label="Log Out All Devices"]
 | 
						|
 | 
						|
 | 
						|
# To disconnect and forget network
 | 
						|
def wifi_disconnect_and_forget(request, WifiName, WifiPass, setup_perfectoMobile, connData):
 | 
						|
    print("\n-------------------------------------")
 | 
						|
    print("Wifi Disconnect and Forget Connection")
 | 
						|
    print("-------------------------------------")
 | 
						|
 | 
						|
    reportFlag = True
 | 
						|
    is_internet = False
 | 
						|
    ip_address_element_text = False
 | 
						|
 | 
						|
    print("Verifying Wifi/AP Connection Details....")
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    report.step_start("Switching Driver Context")
 | 
						|
    print("Switching Context to Native")
 | 
						|
    driver.switch_to.context('NATIVE_APP')
 | 
						|
    # driver.switch_to.context(contexts[0])
 | 
						|
 | 
						|
    report.step_start("Set Wifi Network to " + WifiName)
 | 
						|
    # Open Settings Application
 | 
						|
    openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
    try:
 | 
						|
        time.sleep(2)
 | 
						|
        driver.implicitly_wait(2)
 | 
						|
        try:
 | 
						|
            print("Verifying Connected Wifi Connection")
 | 
						|
            report.step_start("Loading Wifi Page")
 | 
						|
            element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']")
 | 
						|
            element.click()
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("Exception: Verify Xpath - unable to click on Wifi")
 | 
						|
 | 
						|
        time.sleep(2)
 | 
						|
        driver.implicitly_wait(2)
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
        try:
 | 
						|
            get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
            if get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0:
 | 
						|
                get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
                driver.implicitly_wait(1)
 | 
						|
                get_wifi_switch_element.click()
 | 
						|
                driver.implicitly_wait(1)
 | 
						|
                i = 0
 | 
						|
                for i in range(5):
 | 
						|
                    try:
 | 
						|
                        get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
 | 
						|
                        get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                    except:
 | 
						|
                        print("switch is OFF")
 | 
						|
 | 
						|
                    if get_wifi_switch_element_text == "1" or get_wifi_switch_element_text == 1:
 | 
						|
                        print("WIFI Switch is ON")
 | 
						|
                        break
 | 
						|
                    else:
 | 
						|
                        try:
 | 
						|
                            get_wifi_switch_element = driver.find_element_by_xpath(
 | 
						|
                                "//*[@label='Wi-Fi' and @value='0']")
 | 
						|
                            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                        except:
 | 
						|
                            print("WIFi switch is ON")
 | 
						|
                if (get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0):
 | 
						|
                    print("switch is still OFF")
 | 
						|
                    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                    return is_internet
 | 
						|
            else:
 | 
						|
                print("Switch is Still OFF")
 | 
						|
                closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                return is_internet
 | 
						|
        except:
 | 
						|
            print("get_wifi_switch_element is ON")
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
 | 
						|
    except:
 | 
						|
        print("Cannot find WIFI element")
 | 
						|
        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
        return is_internet
 | 
						|
 | 
						|
    # ---------------------This is to Forget current connected SSID-------------------------------
 | 
						|
 | 
						|
    try:
 | 
						|
        print("getting in to Additional details")
 | 
						|
        additional_details_element = driver.find_element_by_xpath(
 | 
						|
            "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")
 | 
						|
        additional_details_element.click()
 | 
						|
        try:
 | 
						|
            print("Forget Connected Network")
 | 
						|
            forget_ssid = driver.find_element_by_xpath("//*[@label='Forget This Network']")
 | 
						|
            forget_ssid.click()
 | 
						|
            print("Forget old ssid")
 | 
						|
            try:
 | 
						|
                report.step_start("Forget SSID popup1")
 | 
						|
                forget_ssid_popup = driver.find_element_by_xpath("//*[@label='Forget']")
 | 
						|
                forget_ssid_popup.click()
 | 
						|
 | 
						|
                print("**alert** Forget SSID popup killed **alert**")
 | 
						|
            except:
 | 
						|
                print("Forget SSID popup not found")
 | 
						|
        except:
 | 
						|
            print("couldn't find forget ssid element")
 | 
						|
    except:
 | 
						|
        print("No connected SSID")
 | 
						|
 | 
						|
    # ---------------------This is to Forget current connected SSID-------------------------------
 | 
						|
    # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
    try:
 | 
						|
        get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
 | 
						|
        get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
        print("switch state is : ", get_wifi_switch_element_text)
 | 
						|
        try:
 | 
						|
            if get_wifi_switch_element_text == "1" or get_wifi_switch_element_text == 1:
 | 
						|
                get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
 | 
						|
                driver.implicitly_wait(1)
 | 
						|
                get_wifi_switch_element.click()
 | 
						|
                driver.implicitly_wait(1)
 | 
						|
                i = 0
 | 
						|
                for i in range(5):
 | 
						|
                    try:
 | 
						|
                        get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
                        get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                    except:
 | 
						|
                        print("switch is ON")
 | 
						|
 | 
						|
                    if get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0:
 | 
						|
                        print("WIFI Switch is OFF")
 | 
						|
                        break
 | 
						|
                    else:
 | 
						|
                        try:
 | 
						|
                            get_wifi_switch_element = driver.find_element_by_xpath(
 | 
						|
                                "//*[@label='Wi-Fi' and @value='1']")
 | 
						|
                            get_wifi_switch_element.click()
 | 
						|
                            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                        except:
 | 
						|
                            print("WIFi switch is OFF")
 | 
						|
 | 
						|
            else:
 | 
						|
                print("Switch is Still OFF")
 | 
						|
        except:
 | 
						|
            pass
 | 
						|
    except:
 | 
						|
        print("get_wifi_switch_element is ON")
 | 
						|
    # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
 | 
						|
    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
 | 
						|
# To get an IP address
 | 
						|
def get_ip_address_eap_ios(request, WifiName, User, ttls_passwd, setup_perfectoMobile, connData):
 | 
						|
    print("\n-------------------------------------")
 | 
						|
    print("Get IP Address Enterprise IOS Connection")
 | 
						|
    print("-------------------------------------")
 | 
						|
 | 
						|
    reportFlag = True
 | 
						|
    is_internet = False
 | 
						|
    ip_address_element_text = False
 | 
						|
 | 
						|
    print("Verifying Wifi/AP Connection Details....")
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    report.step_start("Switching Driver Context")
 | 
						|
    print("Switching Context to Native")
 | 
						|
    driver.switch_to.context('NATIVE_APP')
 | 
						|
    # driver.switch_to.context(contexts[0])
 | 
						|
 | 
						|
    report.step_start("Set Wifi Network to " + WifiName)
 | 
						|
    # Open Settings Application
 | 
						|
    openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
    try:
 | 
						|
        time.sleep(2)
 | 
						|
        driver.implicitly_wait(2)
 | 
						|
        try:
 | 
						|
            print("Verifying Connected Wifi Connection")
 | 
						|
            report.step_start("Loading Wifi Page")
 | 
						|
            element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']")
 | 
						|
            element.click()
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("Exception: Verify Xpath - unable to click on Wifi")
 | 
						|
 | 
						|
        time.sleep(2)
 | 
						|
        driver.implicitly_wait(4)
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
        try:
 | 
						|
            get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
            try:
 | 
						|
                if get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0:
 | 
						|
                    get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
                    driver.implicitly_wait(1)
 | 
						|
                    get_wifi_switch_element.click()
 | 
						|
                    driver.implicitly_wait(1)
 | 
						|
                    i = 0
 | 
						|
                    for i in range(5):
 | 
						|
                        try:
 | 
						|
                            get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
 | 
						|
                            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                        except:
 | 
						|
                            print("switch is OFF")
 | 
						|
 | 
						|
                        if get_wifi_switch_element_text == "1" or get_wifi_switch_element_text == 1:
 | 
						|
                            print("WIFI Switch is ON")
 | 
						|
                            break
 | 
						|
                        else:
 | 
						|
                            try:
 | 
						|
                                get_wifi_switch_element = driver.find_element_by_xpath(
 | 
						|
                                    "//*[@label='Wi-Fi' and @value='0']")
 | 
						|
                                get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                            except:
 | 
						|
                                print("WIFi switch is ON")
 | 
						|
                    if (get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0):
 | 
						|
                        print("switch is still OFF")
 | 
						|
                        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                        return ip_address_element_text, is_internet
 | 
						|
                else:
 | 
						|
                    print("Switch is Still OFF")
 | 
						|
                    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                    return ip_address_element_text, is_internet
 | 
						|
            except:
 | 
						|
                print("No switch element found")
 | 
						|
        except:
 | 
						|
            print("get_wifi_switch_element is ON")
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
 | 
						|
    except:
 | 
						|
        print("Cannot find WIFI element")
 | 
						|
        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
        return ip_address_element_text, is_internet
 | 
						|
 | 
						|
    # ---------------------This is to Forget current connected SSID-------------------------------
 | 
						|
 | 
						|
    try:
 | 
						|
        time.sleep(4)
 | 
						|
        report.step_start("Selecting Connected SSID Info")
 | 
						|
        print("getting in to Additional details")
 | 
						|
        additional_details_element = driver.find_element_by_xpath(
 | 
						|
            "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")
 | 
						|
        additional_details_element.click()
 | 
						|
        try:
 | 
						|
            time.sleep(2)
 | 
						|
            print("Forget Connected Network")
 | 
						|
            report.step_start("Forget Connected SSID")
 | 
						|
            forget_ssid = driver.find_element_by_xpath("//*[@label='Forget This Network']")
 | 
						|
            forget_ssid.click()
 | 
						|
            print("Forget old ssid")
 | 
						|
            try:
 | 
						|
                time.sleep(2)
 | 
						|
                report.step_start("Forget SSID popup1")
 | 
						|
                forget_ssid_popup = driver.find_element_by_xpath("//*[@label='Forget']")
 | 
						|
                forget_ssid_popup.click()
 | 
						|
 | 
						|
                print("**alert** Forget SSID popup killed **alert**")
 | 
						|
            except:
 | 
						|
                print("Forget SSID popup not found")
 | 
						|
        except:
 | 
						|
            print("couldn't find forget ssid element")
 | 
						|
    except:
 | 
						|
        print("No connected SSID")
 | 
						|
 | 
						|
    # ---------------------This is to Forget current connected SSID-------------------------------
 | 
						|
 | 
						|
    # ---------------------To get all available SSID-------------------------------
 | 
						|
    print("Searching for Wifi: " + WifiName)
 | 
						|
    # allure.attach(name= body=str("Searching for Wifi: " + WifiName))
 | 
						|
    time.sleep(5)
 | 
						|
    print("Selecting Wifi: " + WifiName)
 | 
						|
    ssid_found = False
 | 
						|
    available_ssids = False
 | 
						|
 | 
						|
    try:
 | 
						|
        for check_for_all_ssids in range(12):
 | 
						|
            available_ssids = get_all_available_ssids(driver)
 | 
						|
            allure.attach(name="Available SSIDs in device: ", body=str(available_ssids))
 | 
						|
            try:
 | 
						|
                if (not ssid_Visible(driver, WifiName)) or (WifiName not in available_ssids):
 | 
						|
                    scrollDown(setup_perfectoMobile)
 | 
						|
                    time.sleep(2)
 | 
						|
                else:
 | 
						|
                    try:
 | 
						|
                        driver.implicitly_wait(8)
 | 
						|
                        report.step_start("Selecting SSID To Connect")
 | 
						|
                        ssid_found = True
 | 
						|
                        print(WifiName + " : Found in Device")
 | 
						|
                        wifiSelElement = WebDriverWait(driver, 35).until(
 | 
						|
                            EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='" + WifiName + "']")))
 | 
						|
                        print(wifiSelElement)
 | 
						|
                        wifiSelElement.click()
 | 
						|
                        print("Selecting SSID")
 | 
						|
                        break
 | 
						|
                    except:
 | 
						|
                        print("SSID unable to select")
 | 
						|
                        report.step_start("Selecting Unable SSID To Connect")
 | 
						|
                        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                        return ip_address_element_text, is_internet
 | 
						|
            except:
 | 
						|
                print("couldn't connect to " + WifiName)
 | 
						|
                # request.config.cache.set(key="SelectingWifiFailed", value=str(e))
 | 
						|
                closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                return ip_address_element_text, is_internet
 | 
						|
                pass
 | 
						|
 | 
						|
        if not ssid_found:
 | 
						|
            print("could not found " + WifiName + " in device")
 | 
						|
            closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
            return ip_address_element_text, is_internet
 | 
						|
    except:
 | 
						|
        pass
 | 
						|
    # ---------------------To get all available SSID-------------------------------
 | 
						|
 | 
						|
    # Set username
 | 
						|
    # -------------------------------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(4)
 | 
						|
        report.step_start("Entering User")
 | 
						|
        print("Entering User name")
 | 
						|
        wifiUserElement = driver.find_element_by_xpath("//*[@label='Username']")
 | 
						|
        wifiUserElement.send_keys(User)
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Password Page Not Loaded, password May be cached in the System")
 | 
						|
        # -------------------------------------------------------
 | 
						|
 | 
						|
    # ---------------------Set Password-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(4)
 | 
						|
        report.step_start("Entering Password")
 | 
						|
        print("Entering password")
 | 
						|
        wifiPassword = driver.find_element_by_xpath("//*[@label='Password']")
 | 
						|
        wifiPassword.send_keys(ttls_passwd)
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Enter Password Page Not Loaded")
 | 
						|
    # ---------------------Set Password-------------------------------
 | 
						|
    # -------------------------------------------------------
 | 
						|
 | 
						|
    # ---------------------Click on join-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(4)
 | 
						|
        report.step_start("Clicking Join")
 | 
						|
        print("Clicking Join")
 | 
						|
        joinBTN = driver.find_element_by_xpath("//*[@label='Join']")
 | 
						|
        joinBTN.click()
 | 
						|
    except Exception as e:
 | 
						|
        print("Join Button Not Enabled...Password may not be needed")
 | 
						|
    # ---------------------Click on join-------------------------------
 | 
						|
    # Selecting certificate
 | 
						|
    # -------------------------------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(4)
 | 
						|
        report.step_start("Clicking Trust CA Cert")
 | 
						|
        print("Clicking Trust CA Cert")
 | 
						|
        certElement = WebDriverWait(driver, 45).until(
 | 
						|
            EC.presence_of_element_located((MobileBy.XPATH,"//*[@label='Trust']")))
 | 
						|
        certElement.click()
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Password Page Not Loaded, password May be cached in the System")
 | 
						|
    # ---------------------check if internet-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(5)
 | 
						|
        report.step_start("Checking Internet connection")
 | 
						|
        WifiInternetErrMsg2 = driver.find_element_by_xpath("//*[@label='No Internet Connection']")
 | 
						|
        # = driver.find_element_by_xpath("//*[@label='No Internet Connection']").text
 | 
						|
    except Exception as e:
 | 
						|
        is_internet = True
 | 
						|
        print("No Wifi-AP Error Internet Error: " + WifiName)
 | 
						|
        # Need to add Wait for Selected Wifi Xpath
 | 
						|
        # time.sleep(3)
 | 
						|
    # ---------------------check if internet-------------------------------
 | 
						|
 | 
						|
    # ---------------------Additional INFO-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(4)
 | 
						|
        print("Selecting SSID: ", WifiName)
 | 
						|
        report.step_start("Selecting More Info")
 | 
						|
        additional_details_element = WebDriverWait(driver, 35).until(
 | 
						|
            EC.presence_of_element_located((MobileBy.XPATH,
 | 
						|
                                            "//*[@label='" + WifiName + "']")))
 | 
						|
        # //*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']
 | 
						|
        additional_details_element.click()
 | 
						|
 | 
						|
        try:
 | 
						|
            driver.implicitly_wait(2)
 | 
						|
            report.step_start("Checking SSID Name as Expected")
 | 
						|
            print("Checking SSID Name")
 | 
						|
            ssidname_text = driver.find_element_by_xpath("//*[@label='" + WifiName + "']").text
 | 
						|
            print(ssidname_text)
 | 
						|
            if(ssidname_text == WifiName):
 | 
						|
                print("SSID Matched")
 | 
						|
                allure.attach(name="SSID Matched ", body=str(WifiName))
 | 
						|
            else:
 | 
						|
                print("SSID Not Matched")
 | 
						|
                allure.attach(name="SSID Not Matched ", body=str(WifiName))
 | 
						|
                reportFlag = False
 | 
						|
                assert reportFlag
 | 
						|
        except:
 | 
						|
            print("SSID is not Checked in more Info")
 | 
						|
 | 
						|
        try:
 | 
						|
            report.step_start("Checking WiFi Address")
 | 
						|
            print("Checking WIFI address")
 | 
						|
            # (//*[@label="IP Address"]/parent::*/XCUIElementTypeStaticText)[2]
 | 
						|
            wifi_address_element_text = driver.find_element_by_xpath(
 | 
						|
                "(//*[@label='Wi-Fi Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
            print("wifi_address_element_text: ", wifi_address_element_text)
 | 
						|
            allure.attach(name="Connected SSID WiFi-Address: ", body=str(wifi_address_element_text))
 | 
						|
        except Exception as e:
 | 
						|
            print("WiFi-Address not Found")
 | 
						|
            allure.attach(name="No Connected SSID WiFi-Address Found")
 | 
						|
        try:
 | 
						|
            time.sleep(5)
 | 
						|
            print("Checking IP address")
 | 
						|
            report.step_start("Checking IP address")
 | 
						|
            time.sleep(1)
 | 
						|
            # (//*[@label="IP Address"]/parent::*/XCUIElementTypeStaticText)[2]
 | 
						|
            ip_address_element_text = driver.find_element_by_xpath(
 | 
						|
                "(//*[@label='IP Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
            print("ip_address_element_text: ", ip_address_element_text)
 | 
						|
        except Exception as e:
 | 
						|
            try:
 | 
						|
                time.sleep(4)
 | 
						|
                print("Scrolling for checking IP Address")
 | 
						|
                scrollDown(setup_perfectoMobile)
 | 
						|
                ip_address_element_text = driver.find_element_by_xpath(
 | 
						|
                    "(//*[@label='IP Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
                print("ip_address_element_text: ", ip_address_element_text)
 | 
						|
            except:
 | 
						|
                print("IP Address not Found")
 | 
						|
                request.config.cache.set(key="select IP failed", value=str(e))
 | 
						|
        try:
 | 
						|
            driver.implicitly_wait(4)
 | 
						|
            report.step_start("Forget Network")
 | 
						|
            forget_ssid = driver.find_element_by_xpath("//*[@label='Forget This Network']")
 | 
						|
            forget_ssid.click()
 | 
						|
            print("Forget old ssid")
 | 
						|
            # time.sleep(2)
 | 
						|
            # driver.implicitly_wait(3)
 | 
						|
            try:
 | 
						|
                report.step_start("Forget Network popup")
 | 
						|
                forget_ssid_popup = driver.find_element_by_xpath("//*[@label='Forget']")
 | 
						|
                forget_ssid_popup.click()
 | 
						|
            except:
 | 
						|
                print("in popup exception")
 | 
						|
 | 
						|
        except:
 | 
						|
            print("error on ssid element")
 | 
						|
 | 
						|
            # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
        # try:
 | 
						|
        #     get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
 | 
						|
        #     get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
        #     print("switch state is : ", get_wifi_switch_element_text)
 | 
						|
        #     try:
 | 
						|
        #         if get_wifi_switch_element_text == "1" or get_wifi_switch_element_text == 1:
 | 
						|
        #             get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
 | 
						|
        #             driver.implicitly_wait(1)
 | 
						|
        #             get_wifi_switch_element.click()
 | 
						|
        #             driver.implicitly_wait(1)
 | 
						|
        #             i = 0
 | 
						|
        #             for i in range(5):
 | 
						|
        #                 try:
 | 
						|
        #                     get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
        #                     get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
        #                 except:
 | 
						|
        #                     print("switch is ON")
 | 
						|
        #
 | 
						|
        #                 if get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0:
 | 
						|
        #                     print("WIFI Switch is OFF")
 | 
						|
        #                     break
 | 
						|
        #                 else:
 | 
						|
        #                     try:
 | 
						|
        #                         get_wifi_switch_element = driver.find_element_by_xpath(
 | 
						|
        #                             "//*[@label='Wi-Fi' and @value='1']")
 | 
						|
        #                         get_wifi_switch_element.click()
 | 
						|
        #                         get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
        #                     except:
 | 
						|
        #                         print("WIFi switch is OFF")
 | 
						|
        #
 | 
						|
        #         else:
 | 
						|
        #             print("Switch is Still OFF")
 | 
						|
        #     except:
 | 
						|
        #         pass
 | 
						|
        # except:
 | 
						|
        #     print("get_wifi_switch_element is ON")
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
 | 
						|
    except Exception as e:
 | 
						|
        request.config.cache.set(key="select additional info failed", value=str(e))
 | 
						|
    # ---------------------Additional INFO-------------------------------
 | 
						|
 | 
						|
    # --------------------- close app-------------------------------
 | 
						|
    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
    return ip_address_element_text, is_internet
 | 
						|
    # ---------------------close app-------------------------------
 | 
						|
 | 
						|
 | 
						|
def wifi_connect_eap(request, WifiName, User, ttls_passwd, setup_perfectoMobile, connData):
 | 
						|
    print("\n-------------------------------------")
 | 
						|
    print("Wifi Connect Enterprise Connection")
 | 
						|
    print("-------------------------------------")
 | 
						|
 | 
						|
    reportFlag = True
 | 
						|
    is_internet = False
 | 
						|
    ip_address_element_text = False
 | 
						|
 | 
						|
    print("Verifying Wifi/AP Connection Details....")
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    report.step_start("Switching Driver Context")
 | 
						|
    print("Switching Context to Native")
 | 
						|
    driver.switch_to.context('NATIVE_APP')
 | 
						|
    # driver.switch_to.context(contexts[0])
 | 
						|
 | 
						|
    report.step_start("Set Wifi Network to " + WifiName)
 | 
						|
    # Open Settings Application
 | 
						|
    openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
    try:
 | 
						|
        time.sleep(2)
 | 
						|
        driver.implicitly_wait(2)
 | 
						|
        try:
 | 
						|
            print("Verifying Connected Wifi Connection")
 | 
						|
            report.step_start("Loading Wifi Page")
 | 
						|
            element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']")
 | 
						|
            element.click()
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("Exception: Verify Xpath - unable to click on Wifi")
 | 
						|
 | 
						|
        time.sleep(2)
 | 
						|
        driver.implicitly_wait(2)
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
        try:
 | 
						|
            get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
            try:
 | 
						|
                if get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0:
 | 
						|
                    get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
                    driver.implicitly_wait(1)
 | 
						|
                    get_wifi_switch_element.click()
 | 
						|
                    driver.implicitly_wait(1)
 | 
						|
                    i = 0
 | 
						|
                    for i in range(5):
 | 
						|
                        try:
 | 
						|
                            get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
 | 
						|
                            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                        except:
 | 
						|
                            print("switch is OFF")
 | 
						|
 | 
						|
                        if get_wifi_switch_element_text == "1" or get_wifi_switch_element_text == 1:
 | 
						|
                            print("WIFI Switch is ON")
 | 
						|
                            break
 | 
						|
                        else:
 | 
						|
                            try:
 | 
						|
                                get_wifi_switch_element = driver.find_element_by_xpath(
 | 
						|
                                    "//*[@label='Wi-Fi' and @value='0']")
 | 
						|
                                get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                            except:
 | 
						|
                                print("WIFi switch is ON")
 | 
						|
                    if (get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0):
 | 
						|
                        print("switch is still OFF")
 | 
						|
                        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                        return is_internet
 | 
						|
                else:
 | 
						|
                    print("Switch is Still OFF")
 | 
						|
                    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                    return is_internet
 | 
						|
            except:
 | 
						|
                print("No switch element found")
 | 
						|
        except:
 | 
						|
            print("get_wifi_switch_element is ON")
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
 | 
						|
    except:
 | 
						|
        print("Cannot find WIFI element")
 | 
						|
        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
        return is_internet
 | 
						|
 | 
						|
    # ---------------------This is to Forget current connected SSID-------------------------------
 | 
						|
 | 
						|
    try:
 | 
						|
        print("getting in to Additional details")
 | 
						|
        additional_details_element = driver.find_element_by_xpath(
 | 
						|
            "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")
 | 
						|
        additional_details_element.click()
 | 
						|
        try:
 | 
						|
            print("Forget Connected Network")
 | 
						|
            forget_ssid = driver.find_element_by_xpath("//*[@label='Forget This Network']")
 | 
						|
            forget_ssid.click()
 | 
						|
            print("Forget old ssid")
 | 
						|
            try:
 | 
						|
                report.step_start("Forget SSID popup1")
 | 
						|
                forget_ssid_popup = driver.find_element_by_xpath("//*[@label='Forget']")
 | 
						|
                forget_ssid_popup.click()
 | 
						|
 | 
						|
                print("**alert** Forget SSID popup killed **alert**")
 | 
						|
            except:
 | 
						|
                print("Forget SSID popup not found")
 | 
						|
        except:
 | 
						|
            print("couldn't find forget ssid element")
 | 
						|
    except:
 | 
						|
        print("No connected SSID")
 | 
						|
 | 
						|
    # ---------------------This is to Forget current connected SSID-------------------------------
 | 
						|
 | 
						|
    # ---------------------To get all available SSID-------------------------------
 | 
						|
    print("Searching for Wifi: " + WifiName)
 | 
						|
    # allure.attach(name= body=str("Searching for Wifi: " + WifiName))
 | 
						|
    time.sleep(2)
 | 
						|
    print("Selecting Wifi: " + WifiName)
 | 
						|
    ssid_found = False
 | 
						|
    available_ssids = False
 | 
						|
 | 
						|
    try:
 | 
						|
        for check_for_all_ssids in range(12):
 | 
						|
            available_ssids = get_all_available_ssids(driver)
 | 
						|
            try:
 | 
						|
                if WifiName not in available_ssids:
 | 
						|
                    scrollDown(setup_perfectoMobile)
 | 
						|
                    time.sleep(2)
 | 
						|
                else:
 | 
						|
                    ssid_found = True
 | 
						|
                    print(WifiName + " : Found in Device")
 | 
						|
                    # allure.attach(name= body=str(WifiName + " : Found in Device"))
 | 
						|
                    break
 | 
						|
            except:
 | 
						|
                pass
 | 
						|
 | 
						|
        if not ssid_found:
 | 
						|
            print("could not found " + WifiName + " in device")
 | 
						|
            closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
            return is_internet
 | 
						|
    except:
 | 
						|
        pass
 | 
						|
    # ---------------------To get all available SSID-------------------------------
 | 
						|
 | 
						|
    # ---------------------This is to Select SSID-------------------------------
 | 
						|
    try:
 | 
						|
        wifiSelectionElement = WebDriverWait(driver, 30).until(
 | 
						|
            EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='" + WifiName + "']")))
 | 
						|
        wifiSelectionElement.click()
 | 
						|
        print("Selecting SSID")
 | 
						|
    except Exception as e:
 | 
						|
        print("couldn't connect to " + WifiName)
 | 
						|
        request.config.cache.set(key="SelectingWifiFailed", value=str(e))
 | 
						|
        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
        return is_internet
 | 
						|
    # ---------------------This is to Select SSID-------------------------------
 | 
						|
    # -------------------------Set username---------------------------------
 | 
						|
    # -------------------------------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(5)
 | 
						|
        report.step_start("Entering User")
 | 
						|
        print("Entering User name")
 | 
						|
        wifiUserElement = driver.find_element_by_xpath("//*[@label='Username']")
 | 
						|
        wifiUserElement.send_keys(User)
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Password Page Not Loaded, password May be cached in the System")
 | 
						|
        # -------------------------------------------------------
 | 
						|
 | 
						|
    # ---------------------Set Password-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(5)
 | 
						|
        report.step_start("Entering Password")
 | 
						|
        print("Entering password")
 | 
						|
        wifiPassword = driver.find_element_by_xpath("//*[@label='Password']")
 | 
						|
        wifiPassword.send_keys(ttls_passwd)
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Enter Password Page Not Loaded")
 | 
						|
    # ---------------------Set Password-------------------------------
 | 
						|
    # -------------------------------------------------------
 | 
						|
 | 
						|
    # ---------------------Click on join-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(5)
 | 
						|
        report.step_start("Clicking Join")
 | 
						|
        print("Clicking Join")
 | 
						|
        joinBTN = driver.find_element_by_xpath("//*[@label='Join']")
 | 
						|
        joinBTN.click()
 | 
						|
    except Exception as e:
 | 
						|
        print("Join Button Not Enabled...Password may not be needed")
 | 
						|
    # ---------------------Click on join-------------------------------
 | 
						|
    # Selecting certificate
 | 
						|
    # -------------------------------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(3)
 | 
						|
        report.step_start("Clicking Trust CA Cert")
 | 
						|
        print("Clicking Trust CA Cert")
 | 
						|
        certElement = driver.find_element_by_xpath("//*[@label='Trust']")
 | 
						|
        certElement.click()
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Password Page Not Loaded, password May be cached in the System")
 | 
						|
    # ---------------------check if internet-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(5)
 | 
						|
        report.step_start("Checking Internet connection")
 | 
						|
        WifiInternetErrMsg2 = driver.find_element_by_xpath("//*[@label='No Internet Connection']")
 | 
						|
        # = driver.find_element_by_xpath("//*[@label='No Internet Connection']").text
 | 
						|
    except Exception as e:
 | 
						|
        is_internet = True
 | 
						|
        print("No Wifi-AP Error Internet Error: " + WifiName)
 | 
						|
        # Need to add Wait for Selected Wifi Xpath
 | 
						|
        # time.sleep(3)
 | 
						|
    # ---------------------check if internet-------------------------------
 | 
						|
 | 
						|
    # --------------------- close app-------------------------------
 | 
						|
    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
    return is_internet
 | 
						|
 | 
						|
    # ---------------------close app-------------------------------
 | 
						|
 | 
						|
#Captive Portal
 | 
						|
def captive_portal_ios(request, WifiName, WifiPass, setup_perfectoMobile, connData):
 | 
						|
    print("\n-------------------------------------")
 | 
						|
    print("CaptivePortal Connection iOS")
 | 
						|
    print("-------------------------------------")
 | 
						|
 | 
						|
    reportFlag = True
 | 
						|
    is_internet = False
 | 
						|
    ip_address_element_text = False
 | 
						|
 | 
						|
    print("Verifying Wifi/AP Connection Details....")
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    report.step_start("Switching Driver Context")
 | 
						|
    print("Switching Context to Native")
 | 
						|
    driver.switch_to.context('NATIVE_APP')
 | 
						|
    # driver.switch_to.context(contexts[0])
 | 
						|
 | 
						|
    report.step_start("Set Wifi Network to " + WifiName)
 | 
						|
    # Open Settings Application
 | 
						|
    openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
    try:
 | 
						|
        time.sleep(2)
 | 
						|
        driver.implicitly_wait(2)
 | 
						|
        try:
 | 
						|
            print("Verifying Connected Wifi Connection")
 | 
						|
            report.step_start("Loading Wifi Page")
 | 
						|
            element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']")
 | 
						|
            element.click()
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("Exception: Verify Xpath - unable to click on Wifi")
 | 
						|
 | 
						|
        time.sleep(2)
 | 
						|
        driver.implicitly_wait(4)
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
        try:
 | 
						|
            get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
            try:
 | 
						|
                if get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0:
 | 
						|
                    get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
                    driver.implicitly_wait(1)
 | 
						|
                    get_wifi_switch_element.click()
 | 
						|
                    driver.implicitly_wait(1)
 | 
						|
                    i = 0
 | 
						|
                    for i in range(5):
 | 
						|
                        try:
 | 
						|
                            get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
 | 
						|
                            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                        except:
 | 
						|
                            print("Switch is OFF")
 | 
						|
 | 
						|
                        if get_wifi_switch_element_text == "1" or get_wifi_switch_element_text == 1:
 | 
						|
                            print("WIFI Switch is ON")
 | 
						|
                            break
 | 
						|
                        else:
 | 
						|
                            try:
 | 
						|
                                get_wifi_switch_element = driver.find_element_by_xpath(
 | 
						|
                                    "//*[@label='Wi-Fi' and @value='0']")
 | 
						|
                                get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                            except:
 | 
						|
                                print("WIFi switch is ON")
 | 
						|
                    if (get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0):
 | 
						|
                        print("switch is still OFF")
 | 
						|
                        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                        return ip_address_element_text, is_internet
 | 
						|
                else:
 | 
						|
                    print("Switch is Still OFF")
 | 
						|
                    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                    return ip_address_element_text, is_internet
 | 
						|
            except:
 | 
						|
                print("No switch element found")
 | 
						|
        except:
 | 
						|
            print("get_wifi_switch_element is ON")
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
 | 
						|
    except:
 | 
						|
        print("Cannot find WIFI element")
 | 
						|
        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
        return ip_address_element_text, is_internet
 | 
						|
 | 
						|
    # ---------------------This is to Forget current connected SSID-------------------------------
 | 
						|
 | 
						|
    # ---------------------This to Avoid any popup page from captive portal--------------------#
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    try:
 | 
						|
        time.sleep(4)
 | 
						|
        print("getting in to Additional details")
 | 
						|
        report.step_start("Clicking More Info")
 | 
						|
        additional_details_element = driver.find_element_by_xpath(
 | 
						|
            "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")
 | 
						|
        additional_details_element.click()
 | 
						|
        try:
 | 
						|
            time.sleep(2)
 | 
						|
            print("Forget Connected Network")
 | 
						|
            forget_ssid = WebDriverWait(driver, 30).until(
 | 
						|
                EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget This Network']")))
 | 
						|
            forget_ssid.click()
 | 
						|
            print("Forget old ssid")
 | 
						|
            try:
 | 
						|
                time.sleep(2)
 | 
						|
                report.step_start("Forget SSID popup1")
 | 
						|
                forget_ssid_popup = WebDriverWait(driver, 30).until(
 | 
						|
                    EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget']")))
 | 
						|
                forget_ssid_popup.click()
 | 
						|
 | 
						|
                print("**alert** Forget SSID popup killed **alert**")
 | 
						|
            except:
 | 
						|
                print("Forget SSID popup not found")
 | 
						|
        except:
 | 
						|
            print("couldn't find forget ssid element")
 | 
						|
    except:
 | 
						|
        print("No connected SSID")
 | 
						|
        try:
 | 
						|
            report.step_start("Unexpected Captive Popup")
 | 
						|
            print("Unexpeceted Captive Poped Up")
 | 
						|
            captive_portal_cancel_element = driver.find_element_by_xpath("//*[@label='Cancel']")
 | 
						|
            captive_portal_cancel_element.click()
 | 
						|
            time.sleep(2)
 | 
						|
            use_other_network_element = driver.find_element_by_xpath("//*[@label='Use Other Network']")
 | 
						|
            use_other_network_element.click()
 | 
						|
            time.sleep(2)
 | 
						|
        except:
 | 
						|
            print("No Captive Portal Popup Found")
 | 
						|
            try:
 | 
						|
                time.sleep(4)
 | 
						|
                print("getting in to Additional details")
 | 
						|
                report.step_start("Clicking More Info")
 | 
						|
                additional_details_element = driver.find_element_by_xpath(
 | 
						|
                    "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")
 | 
						|
                additional_details_element.click()
 | 
						|
                try:
 | 
						|
                    time.sleep(2)
 | 
						|
                    print("Forget Connected Network")
 | 
						|
                    forget_ssid = WebDriverWait(driver, 30).until(
 | 
						|
                        EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget This Network']")))
 | 
						|
                    forget_ssid.click()
 | 
						|
                    print("Forget old ssid")
 | 
						|
                    try:
 | 
						|
                        time.sleep(2)
 | 
						|
                        report.step_start("Forget SSID popup1")
 | 
						|
                        forget_ssid_popup = WebDriverWait(driver, 30).until(
 | 
						|
                            EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget']")))
 | 
						|
                        forget_ssid_popup.click()
 | 
						|
 | 
						|
                        print("**alert** Forget SSID popup killed **alert**")
 | 
						|
                    except:
 | 
						|
                        print("Forget SSID popup not found")
 | 
						|
                except:
 | 
						|
                    print("couldn't find forget ssid element")
 | 
						|
            except:
 | 
						|
                print("No connected SSID")
 | 
						|
    # ---------------------This is to Forget current connected SSID-------------------------------
 | 
						|
 | 
						|
    # ---------------------To get all available SSID-------------------------------
 | 
						|
    print("Searching for Wifi: " + WifiName)
 | 
						|
    # allure.attach(name= body=str("Searching for Wifi: " + WifiName))
 | 
						|
    time.sleep(2)
 | 
						|
    report.step_start("Searching SSID")
 | 
						|
    print("Selecting Wifi: " + WifiName)
 | 
						|
    ssid_found = False
 | 
						|
    available_ssids = False
 | 
						|
 | 
						|
    try:
 | 
						|
        for check_for_all_ssids in range(12):
 | 
						|
            available_ssids = get_all_available_ssids(driver)
 | 
						|
            allure.attach(name="Available SSIDs in device: ", body=str(available_ssids))
 | 
						|
            try:
 | 
						|
                if (not ssid_Visible(driver, WifiName)) or (WifiName not in available_ssids):
 | 
						|
                    scrollDown(setup_perfectoMobile)
 | 
						|
                    time.sleep(2)
 | 
						|
                else:
 | 
						|
                    try:
 | 
						|
                        driver.implicitly_wait(8)
 | 
						|
                        report.step_start("Selecting SSID To Connect")
 | 
						|
                        ssid_found = True
 | 
						|
                        print(WifiName + " : Found in Device")
 | 
						|
                        wifiSelElement = WebDriverWait(driver, 35).until(
 | 
						|
                            EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='" + WifiName + "']")))
 | 
						|
                        print(wifiSelElement)
 | 
						|
                        wifiSelElement.click()
 | 
						|
                        print("Selecting SSID")
 | 
						|
                        break
 | 
						|
                    except:
 | 
						|
                        print("SSID unable to select")
 | 
						|
                        report.step_start("Selecting Unable SSID To Connect")
 | 
						|
                        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                        return ip_address_element_text, is_internet
 | 
						|
 | 
						|
            except:
 | 
						|
                print("couldn't connect to " + WifiName)
 | 
						|
                # request.config.cache.set(key="SelectingWifiFailed", value=str(e))
 | 
						|
                closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                return ip_address_element_text, is_internet
 | 
						|
                pass
 | 
						|
 | 
						|
        if not ssid_found:
 | 
						|
            print("could not found " + WifiName + " in device")
 | 
						|
            closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
            return ip_address_element_text, is_internet
 | 
						|
    except:
 | 
						|
        pass
 | 
						|
    # ---------------------To get all available SSID-------------------------------
 | 
						|
 | 
						|
    # ---------------------This is to Select SSID-------------------------------
 | 
						|
 | 
						|
    # ---------------------This is to Select SSID-------------------------------
 | 
						|
    # ---------------------Set Password-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(5)
 | 
						|
        print("Entering Password")
 | 
						|
        report.step_start("Entering Password")
 | 
						|
        wifiPassword = driver.find_element_by_xpath("//*[@label='Password']")
 | 
						|
        wifiPassword.send_keys(WifiPass)
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Enter Password Page Not Loaded")
 | 
						|
    # ---------------------Set Password-------------------------------
 | 
						|
 | 
						|
    # ---------------------Click on join-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(4)
 | 
						|
        print("Selecting join")
 | 
						|
        report.step_start("Clicking JOIN")
 | 
						|
        joinBTN = driver.find_element_by_xpath("//*[@label='Join']")
 | 
						|
        joinBTN.click()
 | 
						|
    except Exception as e:
 | 
						|
        print("Join Button Not Enabled...Password may not be needed")
 | 
						|
    # ---------------------Click on join-------------------------------
 | 
						|
    # ---------------------check if internet-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(5)
 | 
						|
        WifiInternetErrMsg2 = driver.find_element_by_xpath("//*[@label='No Internet Connection']")
 | 
						|
        # = driver.find_element_by_xpath("//*[@label='No Internet Connection']").text
 | 
						|
    except Exception as e:
 | 
						|
        is_internet = True
 | 
						|
        print("No Wifi-AP Error Internet Error: " + WifiName)
 | 
						|
        # Need to add Wait for Selected Wifi Xpath
 | 
						|
        # time.sleep(3)
 | 
						|
    # ---------------------check if internet-------------------------------
 | 
						|
    try:
 | 
						|
        time.sleep(8)
 | 
						|
        try:
 | 
						|
            time.sleep(8)
 | 
						|
            print("Accepting terms and Services")
 | 
						|
            report.step_start("loading Terms Page")
 | 
						|
            element = WebDriverWait(driver,40).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Accept Terms of Service']")))
 | 
						|
            element.click()
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("Exception: Accept Terms of Service Button Not Found")
 | 
						|
            reportFlag = False
 | 
						|
            assert reportFlag
 | 
						|
        try:
 | 
						|
            print("Continue to connect the services")
 | 
						|
            report.step_start("Continiue Terms and Services Page")
 | 
						|
            element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Continue']")))
 | 
						|
            element.click()
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("Exception: Continue to connect Terms of Service Button Not Found")
 | 
						|
        try:
 | 
						|
            print("Continue to the services")
 | 
						|
            report.step_start("Continue to use captive portal services")
 | 
						|
            element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Continue']")))
 | 
						|
            element.click()
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("Exception: Continue to use captive portal services not found")
 | 
						|
        try:
 | 
						|
            time.sleep(2)
 | 
						|
            print("Final Result Page")
 | 
						|
            report.step_start("Final Confirmation Page for Captive Portal Login")
 | 
						|
            element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Done']")))
 | 
						|
            element.click()
 | 
						|
            # if element == driver.find_element_by_xpath("//XCUIElementTypeOther[@label='Success']"):
 | 
						|
            #     element1 = driver.find_element_by_xpath("//*[@label='Done']")
 | 
						|
            #     element1.click()
 | 
						|
            # else:
 | 
						|
            #     print("Failed to log in to captive portal")
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("Exception: final Page for Captive Portal Not Found")
 | 
						|
 | 
						|
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("No Splash Page Found")
 | 
						|
 | 
						|
 | 
						|
# ---------------------Additional INFO-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(5)
 | 
						|
        print("Selecting SSID: ", WifiName)
 | 
						|
        report.step_start("Additional details of SSID")
 | 
						|
        additional_details_element = WebDriverWait(driver, 35).until(
 | 
						|
            EC.presence_of_element_located((MobileBy.XPATH,
 | 
						|
                                            "//*[@label='" + WifiName + "']")))
 | 
						|
        # //*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']
 | 
						|
        additional_details_element.click()
 | 
						|
 | 
						|
        try:
 | 
						|
            driver.implicitly_wait(2)
 | 
						|
            report.step_start("Checking SSID Name as Expected")
 | 
						|
            print("Checking SSID Name")
 | 
						|
            ssidname_text = driver.find_element_by_xpath("//*[@label='" + WifiName + "']").text
 | 
						|
            print(ssidname_text)
 | 
						|
            if (ssidname_text == WifiName):
 | 
						|
                print("SSID Matched")
 | 
						|
                allure.attach(name="SSID Matched ", body=str(WifiName))
 | 
						|
            else:
 | 
						|
                print("SSID Not Matched")
 | 
						|
                allure.attach(name="SSID Not Matched ", body=str(WifiName))
 | 
						|
                reportFlag = False
 | 
						|
                assert reportFlag
 | 
						|
        except:
 | 
						|
            print("SSID is not Checked in more Info")
 | 
						|
 | 
						|
        try:
 | 
						|
            report.step_start("Checking WiFi Address")
 | 
						|
            print("Checking WIFI address")
 | 
						|
            # (//*[@label="IP Address"]/parent::*/XCUIElementTypeStaticText)[2]
 | 
						|
            wifi_address_element_text = driver.find_element_by_xpath(
 | 
						|
                "(//*[@label='Wi-Fi Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
            print("wifi_address_element_text: ", wifi_address_element_text)
 | 
						|
            allure.attach(name="Connected SSID WiFi-Address: ", body=str(wifi_address_element_text))
 | 
						|
        except Exception as e:
 | 
						|
            print("WiFi-Address not Found")
 | 
						|
        try:
 | 
						|
            time.sleep(4)
 | 
						|
            report.step_start("Checking IP Address")
 | 
						|
            print("Checking IP address")
 | 
						|
            # (//*[@label="IP Address"]/parent::*/XCUIElementTypeStaticText)[2]
 | 
						|
            ip_address_element_text = driver.find_element_by_xpath(
 | 
						|
                "(//*[@label='IP Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
            print("ip_address_element_text: ", ip_address_element_text)
 | 
						|
        except Exception as e:
 | 
						|
            try:
 | 
						|
                time.sleep(4)
 | 
						|
                print("Scrolling for checking ip address")
 | 
						|
                scrollDown(setup_perfectoMobile)
 | 
						|
                ip_address_element_text = driver.find_element_by_xpath(
 | 
						|
                    "(//*[@label='IP Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
                print("ip_address_element_text: ", ip_address_element_text)
 | 
						|
            except:
 | 
						|
                print("IP Address not Found")
 | 
						|
                request.config.cache.set(key="select IP failed", value=str(e))
 | 
						|
 | 
						|
        try:
 | 
						|
            report.step_start("Forget Network")
 | 
						|
            forget_ssid = WebDriverWait(driver, 30).until(
 | 
						|
                EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget This Network']")))
 | 
						|
            forget_ssid.click()
 | 
						|
            print("Forget connected ssid")
 | 
						|
            time.sleep(2)
 | 
						|
            driver.implicitly_wait(3)
 | 
						|
            try:
 | 
						|
                report.step_start("Forget Network popup")
 | 
						|
                time.sleep(2)
 | 
						|
                forget_ssid_popup = WebDriverWait(driver, 30).until(
 | 
						|
                    EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget']")))
 | 
						|
                forget_ssid_popup.click()
 | 
						|
            except:
 | 
						|
                print("in popup exception")
 | 
						|
 | 
						|
        except:
 | 
						|
            print("error on ssid element")
 | 
						|
 | 
						|
    except Exception as e:
 | 
						|
        request.config.cache.set(key="select additional info failed", value=str(e))
 | 
						|
    # ---------------------Additional INFO-------------------------------
 | 
						|
 | 
						|
    # --------------------- close app-------------------------------
 | 
						|
    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
    return ip_address_element_text, is_internet
 | 
						|
 | 
						|
# Returns whether the ssid is currently visible
 | 
						|
def ssid_Visible(driver,WifiName):
 | 
						|
    wifiSelectionElement = WebDriverWait(driver, 30).until(
 | 
						|
        EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='" + WifiName + "']")))
 | 
						|
    isVisible = wifiSelectionElement.get_attribute("visible")
 | 
						|
    print(f"Is ssid visible: {isVisible}")
 | 
						|
    if(isVisible == 'false'):
 | 
						|
        return False
 | 
						|
    else:
 | 
						|
        return True
 | 
						|
 | 
						|
#--------------------------------Gets ip address from ssid but it won't get disconnected from it------------------
 | 
						|
def gets_ip_add_and_does_not_forget_ssid_ios(request, WifiName, WifiPass, setup_perfectoMobile, connData):
 | 
						|
    print("\n-------------------------------------")
 | 
						|
    print("Select Wifi/Get IP Address IOS Connection")
 | 
						|
    print("-------------------------------------")
 | 
						|
 | 
						|
    reportFlag = True
 | 
						|
    is_internet = False
 | 
						|
    ip_address_element_text = False
 | 
						|
 | 
						|
    print("Verifying Wifi/AP Connection Details....")
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    report.step_start("Switching Driver Context")
 | 
						|
    print("Switching Context to Native")
 | 
						|
    driver.switch_to.context('NATIVE_APP')
 | 
						|
    # driver.switch_to.context(contexts[0])
 | 
						|
 | 
						|
    report.step_start("Set Wifi Network to " + WifiName)
 | 
						|
    # Open Settings Application
 | 
						|
    openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
    try:
 | 
						|
        time.sleep(2)
 | 
						|
        driver.implicitly_wait(2)
 | 
						|
        try:
 | 
						|
            print("Verifying Connected Wifi Connection")
 | 
						|
            report.step_start("Loading Wifi Page")
 | 
						|
            element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']")
 | 
						|
            element.click()
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("Exception: Verify Xpath - unable to click on Wifi")
 | 
						|
 | 
						|
        time.sleep(2)
 | 
						|
        driver.implicitly_wait(2)
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
        try:
 | 
						|
            get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
            try:
 | 
						|
                if get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0:
 | 
						|
                    get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
                    driver.implicitly_wait(1)
 | 
						|
                    get_wifi_switch_element.click()
 | 
						|
                    driver.implicitly_wait(1)
 | 
						|
                    i = 0
 | 
						|
                    for i in range(5):
 | 
						|
                        try:
 | 
						|
                            get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
 | 
						|
                            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                        except:
 | 
						|
                            print("Switch is OFF")
 | 
						|
 | 
						|
                        if get_wifi_switch_element_text == "1" or get_wifi_switch_element_text == 1:
 | 
						|
                            print("WIFI Switch is ON")
 | 
						|
                            break
 | 
						|
                        else:
 | 
						|
                            try:
 | 
						|
                                get_wifi_switch_element = driver.find_element_by_xpath(
 | 
						|
                                    "//*[@label='Wi-Fi' and @value='0']")
 | 
						|
                                get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                            except:
 | 
						|
                                print("WIFi switch is ON")
 | 
						|
                    if (get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0):
 | 
						|
                        print("switch is still OFF")
 | 
						|
                        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                        return ip_address_element_text, is_internet
 | 
						|
                else:
 | 
						|
                    print("Switch is Still OFF")
 | 
						|
                    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                    return ip_address_element_text, is_internet
 | 
						|
            except:
 | 
						|
                print("No switch element found")
 | 
						|
        except:
 | 
						|
            print("get_wifi_switch_element is ON")
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
 | 
						|
    except:
 | 
						|
        print("Cannot find WIFI element")
 | 
						|
        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
        return ip_address_element_text, is_internet
 | 
						|
 | 
						|
    # ---------------------This is to Forget current connected SSID-------------------------------
 | 
						|
 | 
						|
    try:
 | 
						|
        time.sleep(3)
 | 
						|
        print("getting in to Additional details")
 | 
						|
        report.step_start("Clicking More Info")
 | 
						|
        additional_details_element = driver.find_element_by_xpath("//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")
 | 
						|
        additional_details_element.click()
 | 
						|
        try:
 | 
						|
            print("Forget Connected Network")
 | 
						|
            forget_ssid = WebDriverWait(driver, 30).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget This Network']")))
 | 
						|
            forget_ssid.click()
 | 
						|
            print("Forget old ssid")
 | 
						|
            try:
 | 
						|
                report.step_start("Forget SSID popup1")
 | 
						|
                forget_ssid_popup = WebDriverWait(driver, 30).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget']")))
 | 
						|
                forget_ssid_popup.click()
 | 
						|
 | 
						|
                print("**alert** Forget SSID popup killed **alert**")
 | 
						|
            except:
 | 
						|
                print("Forget SSID popup not found")
 | 
						|
        except:
 | 
						|
            print("couldn't find forget ssid element")
 | 
						|
    except:
 | 
						|
        print("No connected SSID")
 | 
						|
 | 
						|
    # ---------------------This is to Forget current connected SSID-------------------------------
 | 
						|
 | 
						|
    # ---------------------To get all available SSID-------------------------------
 | 
						|
    print("Searching for Wifi: " + WifiName)
 | 
						|
    # allure.attach(name= body=str("Searching for Wifi: " + WifiName))
 | 
						|
    time.sleep(2)
 | 
						|
    report.step_start("Searching SSID")
 | 
						|
    print("Selecting Wifi: " + WifiName)
 | 
						|
    ssid_found = False
 | 
						|
    available_ssids = False
 | 
						|
 | 
						|
    try:
 | 
						|
        for check_for_all_ssids in range(12):
 | 
						|
            available_ssids = get_all_available_ssids(driver)
 | 
						|
            allure.attach(name="Available SSIDs in device: ", body=str(available_ssids))
 | 
						|
            try:
 | 
						|
                if (not ssid_Visible(driver, WifiName)) or (WifiName not in available_ssids):
 | 
						|
                    scrollDown(setup_perfectoMobile)
 | 
						|
                    time.sleep(2)
 | 
						|
                else:
 | 
						|
                    try:
 | 
						|
                        driver.implicitly_wait(8)
 | 
						|
                        report.step_start("Selecting SSID To Connect")
 | 
						|
                        ssid_found = True
 | 
						|
                        print(WifiName + " : Found in Device")
 | 
						|
                        wifiSelElement = WebDriverWait(driver, 35).until(
 | 
						|
                            EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='" + WifiName + "']")))
 | 
						|
                        print(wifiSelElement)
 | 
						|
                        wifiSelElement.click()
 | 
						|
                        print("Selecting SSID")
 | 
						|
                        break
 | 
						|
                    except:
 | 
						|
                        print("SSID unable to select")
 | 
						|
                        report.step_start("Selecting Unable SSID To Connect")
 | 
						|
                        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                        return ip_address_element_text, is_internet
 | 
						|
 | 
						|
            except:
 | 
						|
                print("couldn't connect to " + WifiName)
 | 
						|
                # request.config.cache.set(key="SelectingWifiFailed", value=str(e))
 | 
						|
                closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                return ip_address_element_text, is_internet
 | 
						|
                pass
 | 
						|
 | 
						|
        if not ssid_found:
 | 
						|
            print("could not found " + WifiName + " in device")
 | 
						|
            closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
            return ip_address_element_text, is_internet
 | 
						|
    except:
 | 
						|
        pass
 | 
						|
    # ---------------------To get all available SSID-------------------------------
 | 
						|
 | 
						|
    # ---------------------This is to Select SSID-------------------------------
 | 
						|
 | 
						|
    # ---------------------This is to Select SSID-------------------------------
 | 
						|
    # ---------------------Set Password-------------------------------
 | 
						|
    try:
 | 
						|
        time.sleep(3)
 | 
						|
        print("Entering Password")
 | 
						|
        report.step_start("Entering Password")
 | 
						|
        wifiPassword = driver.find_element_by_xpath("//*[@label='Password']")
 | 
						|
        wifiPassword.send_keys(WifiPass)
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Enter Password Page Not Loaded")
 | 
						|
    # ---------------------Set Password-------------------------------
 | 
						|
 | 
						|
    # ---------------------Click on join-------------------------------
 | 
						|
    try:
 | 
						|
        time.sleep(2)
 | 
						|
        print("Selecting join")
 | 
						|
        report.step_start("Clicking JOIN")
 | 
						|
        joinBTN = driver.find_element_by_xpath("//*[@label='Join']")
 | 
						|
        joinBTN.click()
 | 
						|
    except Exception as e:
 | 
						|
        print("Join Button Not Enabled...Password may not be needed")
 | 
						|
    # ---------------------Click on join-------------------------------
 | 
						|
 | 
						|
    # ---------------------check if internet-------------------------------
 | 
						|
    try:
 | 
						|
        WifiInternetErrMsg2 = WebDriverWait(driver, 5).until(
 | 
						|
            EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='No Internet Connection']")))
 | 
						|
        # = driver.find_element_by_xpath("//*[@label='No Internet Connection']").text
 | 
						|
    except Exception as e:
 | 
						|
        is_internet = True
 | 
						|
        print("No Wifi-AP Error Internet Error: " + WifiName)
 | 
						|
        # Need to add Wait for Selected Wifi Xpath
 | 
						|
        # time.sleep(3)
 | 
						|
    # ---------------------check if internet-------------------------------
 | 
						|
 | 
						|
    # ---------------------Additional INFO-------------------------------
 | 
						|
    try:
 | 
						|
        print("Selecting SSID: ", WifiName)
 | 
						|
        report.step_start("Additional details of SSID")
 | 
						|
        additional_details_element = WebDriverWait(driver, 30).until(
 | 
						|
            EC.presence_of_element_located((MobileBy.XPATH,
 | 
						|
                                            "//*[@label='" + WifiName + "']")))
 | 
						|
        # //*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']
 | 
						|
        additional_details_element.click()
 | 
						|
 | 
						|
        try:
 | 
						|
            report.step_start("Checking SSID Name as Expected")
 | 
						|
            print("Checking SSID Name")
 | 
						|
            ssidname_text = driver.find_element_by_xpath("//*[@label='" + WifiName + "']").text
 | 
						|
            print(ssidname_text)
 | 
						|
            if(ssidname_text == WifiName):
 | 
						|
                print("SSID Matched")
 | 
						|
                allure.attach(name="SSID Matched ", body=str(WifiName))
 | 
						|
            else:
 | 
						|
                print("SSID Not Matched")
 | 
						|
                allure.attach(name="SSID Not Matched ", body=str(WifiName))
 | 
						|
                reportFlag = False
 | 
						|
                assert reportFlag
 | 
						|
        except:
 | 
						|
            print("SSID is not Checked in more Info")
 | 
						|
 | 
						|
        try:
 | 
						|
            report.step_start("Checking WiFi Address")
 | 
						|
            print("Checking WIFI address")
 | 
						|
            # (//*[@label="IP Address"]/parent::*/XCUIElementTypeStaticText)[2]
 | 
						|
            wifi_address_element_text = driver.find_element_by_xpath(
 | 
						|
                "(//*[@label='Wi-Fi Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
            print("wifi_address_element_text: ", wifi_address_element_text)
 | 
						|
            allure.attach(name="Connected SSID WiFi-Address: ", body=str(wifi_address_element_text))
 | 
						|
        except Exception as e:
 | 
						|
            print("WiFi-Address not Found")
 | 
						|
        try:
 | 
						|
            time.sleep(4)
 | 
						|
            report.step_start("Checking IP Address")
 | 
						|
            print("Checking IP address")
 | 
						|
            # (//*[@label="IP Address"]/parent::*/XCUIElementTypeStaticText)[2]
 | 
						|
            ip_address_element_text = driver.find_element_by_xpath(
 | 
						|
                "(//*[@label='IP Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
            print("ip_address_element_text: ", ip_address_element_text)
 | 
						|
        except Exception as e:
 | 
						|
            try:
 | 
						|
                time.sleep(4)
 | 
						|
                print("Scrolling for checking ip address")
 | 
						|
                scrollDown(setup_perfectoMobile)
 | 
						|
                ip_address_element_text = driver.find_element_by_xpath(
 | 
						|
                    "(//*[@label='IP Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
                print("ip_address_element_text: ", ip_address_element_text)
 | 
						|
            except:
 | 
						|
                print("IP Address not Found")
 | 
						|
                request.config.cache.set(key="select IP failed", value=str(e))
 | 
						|
 | 
						|
    except Exception as e:
 | 
						|
        request.config.cache.set(key="select additional info failed", value=str(e))
 | 
						|
    # ---------------------Additional INFO-------------------------------
 | 
						|
 | 
						|
    # --------------------- close app-------------------------------
 | 
						|
    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
    return ip_address_element_text, is_internet
 | 
						|
#----------------Gets ip address of Enterprise ssids and won't forget it---------------
 | 
						|
def gets_ip_add_eap_and_does_not_forget_ssid_ios(request, WifiName, User, ttls_passwd, setup_perfectoMobile, connData):
 | 
						|
    print("\n-------------------------------------")
 | 
						|
    print("Get IP Address Enterprise IOS Connection")
 | 
						|
    print("-------------------------------------")
 | 
						|
 | 
						|
    reportFlag = True
 | 
						|
    is_internet = False
 | 
						|
    ip_address_element_text = False
 | 
						|
 | 
						|
    print("Verifying Wifi/AP Connection Details....")
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    report.step_start("Switching Driver Context")
 | 
						|
    print("Switching Context to Native")
 | 
						|
    driver.switch_to.context('NATIVE_APP')
 | 
						|
    # driver.switch_to.context(contexts[0])
 | 
						|
 | 
						|
    report.step_start("Set Wifi Network to " + WifiName)
 | 
						|
    # Open Settings Application
 | 
						|
    openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
    try:
 | 
						|
        time.sleep(2)
 | 
						|
        driver.implicitly_wait(2)
 | 
						|
        try:
 | 
						|
            print("Verifying Connected Wifi Connection")
 | 
						|
            report.step_start("Loading Wifi Page")
 | 
						|
            element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']")
 | 
						|
            element.click()
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("Exception: Verify Xpath - unable to click on Wifi")
 | 
						|
 | 
						|
        time.sleep(2)
 | 
						|
        driver.implicitly_wait(2)
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
        try:
 | 
						|
            get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
            try:
 | 
						|
                if get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0:
 | 
						|
                    get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
                    driver.implicitly_wait(1)
 | 
						|
                    get_wifi_switch_element.click()
 | 
						|
                    driver.implicitly_wait(1)
 | 
						|
                    i = 0
 | 
						|
                    for i in range(5):
 | 
						|
                        try:
 | 
						|
                            get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
 | 
						|
                            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                        except:
 | 
						|
                            print("switch is OFF")
 | 
						|
 | 
						|
                        if get_wifi_switch_element_text == "1" or get_wifi_switch_element_text == 1:
 | 
						|
                            print("WIFI Switch is ON")
 | 
						|
                            break
 | 
						|
                        else:
 | 
						|
                            try:
 | 
						|
                                get_wifi_switch_element = driver.find_element_by_xpath(
 | 
						|
                                    "//*[@label='Wi-Fi' and @value='0']")
 | 
						|
                                get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                            except:
 | 
						|
                                print("WIFi switch is ON")
 | 
						|
                    if (get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0):
 | 
						|
                        print("switch is still OFF")
 | 
						|
                        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                        return ip_address_element_text, is_internet
 | 
						|
                else:
 | 
						|
                    print("Switch is Still OFF")
 | 
						|
                    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                    return ip_address_element_text, is_internet
 | 
						|
            except:
 | 
						|
                print("No switch element found")
 | 
						|
        except:
 | 
						|
            print("get_wifi_switch_element is ON")
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
 | 
						|
    except:
 | 
						|
        print("Cannot find WIFI element")
 | 
						|
        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
        return ip_address_element_text, is_internet
 | 
						|
 | 
						|
    # ---------------------This is to Forget current connected SSID-------------------------------
 | 
						|
 | 
						|
    try:
 | 
						|
        time.sleep(2)
 | 
						|
        report.step_start("Selecting Connected SSID Info")
 | 
						|
        print("getting in to Additional details")
 | 
						|
        additional_details_element = driver.find_element_by_xpath(
 | 
						|
            "//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")
 | 
						|
        additional_details_element.click()
 | 
						|
        try:
 | 
						|
            print("Forget Connected Network")
 | 
						|
            report.step_start("Forget Connected SSID")
 | 
						|
            forget_ssid = driver.find_element_by_xpath("//*[@label='Forget This Network']")
 | 
						|
            forget_ssid.click()
 | 
						|
            print("Forget old ssid")
 | 
						|
            try:
 | 
						|
                report.step_start("Forget SSID popup1")
 | 
						|
                forget_ssid_popup = driver.find_element_by_xpath("//*[@label='Forget']")
 | 
						|
                forget_ssid_popup.click()
 | 
						|
 | 
						|
                print("**alert** Forget SSID popup killed **alert**")
 | 
						|
            except:
 | 
						|
                print("Forget SSID popup not found")
 | 
						|
        except:
 | 
						|
            print("couldn't find forget ssid element")
 | 
						|
    except:
 | 
						|
        print("No connected SSID")
 | 
						|
 | 
						|
    # ---------------------This is to Forget current connected SSID-------------------------------
 | 
						|
 | 
						|
    # ---------------------To get all available SSID-------------------------------
 | 
						|
    print("Searching for Wifi: " + WifiName)
 | 
						|
    # allure.attach(name= body=str("Searching for Wifi: " + WifiName))
 | 
						|
    time.sleep(2)
 | 
						|
    print("Selecting Wifi: " + WifiName)
 | 
						|
    ssid_found = False
 | 
						|
    available_ssids = False
 | 
						|
 | 
						|
    try:
 | 
						|
        for check_for_all_ssids in range(12):
 | 
						|
            available_ssids = get_all_available_ssids(driver)
 | 
						|
            allure.attach(name="Available SSIDs in device: ", body=str(available_ssids))
 | 
						|
            try:
 | 
						|
                if (not ssid_Visible(driver, WifiName)) or (WifiName not in available_ssids):
 | 
						|
                    scrollDown(setup_perfectoMobile)
 | 
						|
                    time.sleep(2)
 | 
						|
                else:
 | 
						|
                    try:
 | 
						|
                        driver.implicitly_wait(8)
 | 
						|
                        report.step_start("Selecting SSID To Connect")
 | 
						|
                        ssid_found = True
 | 
						|
                        print(WifiName + " : Found in Device")
 | 
						|
                        wifiSelElement = WebDriverWait(driver, 35).until(
 | 
						|
                            EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='" + WifiName + "']")))
 | 
						|
                        print(wifiSelElement)
 | 
						|
                        wifiSelElement.click()
 | 
						|
                        print("Selecting SSID")
 | 
						|
                        break
 | 
						|
                    except:
 | 
						|
                        print("SSID unable to select")
 | 
						|
                        report.step_start("Selecting Unable SSID To Connect")
 | 
						|
                        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                        return ip_address_element_text, is_internet
 | 
						|
            except:
 | 
						|
                print("couldn't connect to " + WifiName)
 | 
						|
                # request.config.cache.set(key="SelectingWifiFailed", value=str(e))
 | 
						|
                closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                return ip_address_element_text, is_internet
 | 
						|
                pass
 | 
						|
 | 
						|
        if not ssid_found:
 | 
						|
            print("could not found " + WifiName + " in device")
 | 
						|
            closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
            return ip_address_element_text, is_internet
 | 
						|
    except:
 | 
						|
        pass
 | 
						|
    # ---------------------To get all available SSID-------------------------------
 | 
						|
 | 
						|
    # Set username
 | 
						|
    # -------------------------------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(5)
 | 
						|
        report.step_start("Entering User")
 | 
						|
        print("Entering User name")
 | 
						|
        wifiUserElement = driver.find_element_by_xpath("//*[@label='Username']")
 | 
						|
        wifiUserElement.send_keys(User)
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Password Page Not Loaded, password May be cached in the System")
 | 
						|
        # -------------------------------------------------------
 | 
						|
 | 
						|
    # ---------------------Set Password-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(5)
 | 
						|
        report.step_start("Entering Password")
 | 
						|
        print("Entering password")
 | 
						|
        wifiPassword = driver.find_element_by_xpath("//*[@label='Password']")
 | 
						|
        wifiPassword.send_keys(ttls_passwd)
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Enter Password Page Not Loaded")
 | 
						|
    # ---------------------Set Password-------------------------------
 | 
						|
    # -------------------------------------------------------
 | 
						|
 | 
						|
    # ---------------------Click on join-------------------------------
 | 
						|
    try:
 | 
						|
        report.step_start("Clicking Join")
 | 
						|
        print("Clicking Join")
 | 
						|
        joinBTN = WebDriverWait(driver, 30).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Join']")))
 | 
						|
        joinBTN.click()
 | 
						|
    except Exception as e:
 | 
						|
        print("Join Button Not Enabled...Password may not be needed")
 | 
						|
    # ---------------------Click on join-------------------------------
 | 
						|
    # Selecting certificate
 | 
						|
    # -------------------------------------------------------
 | 
						|
    try:
 | 
						|
        report.step_start("Clicking Trust CA Cert")
 | 
						|
        print("Clicking Trust CA Cert")
 | 
						|
        certElement = WebDriverWait(driver, 30).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Trust']")))
 | 
						|
        certElement.click()
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Password Page Not Loaded, password May be cached in the System")
 | 
						|
    # ---------------------check if internet-------------------------------
 | 
						|
    try:
 | 
						|
        report.step_start("Checking Internet connection")
 | 
						|
        WifiInternetErrMsg2 = WebDriverWait(driver, 35).until(
 | 
						|
            EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='No Internet Connection']")))
 | 
						|
        # = driver.find_element_by_xpath("//*[@label='No Internet Connection']").text
 | 
						|
    except Exception as e:
 | 
						|
        is_internet = True
 | 
						|
        print("No Wifi-AP Error Internet Error: " + WifiName)
 | 
						|
        # Need to add Wait for Selected Wifi Xpath
 | 
						|
        # time.sleep(3)
 | 
						|
    # ---------------------check if internet-------------------------------
 | 
						|
 | 
						|
    # ---------------------Additional INFO-------------------------------
 | 
						|
    try:
 | 
						|
        driver.implicitly_wait(2)
 | 
						|
        print("Selecting SSID: ", WifiName)
 | 
						|
        report.step_start("Selecting More Info")
 | 
						|
        additional_details_element = WebDriverWait(driver, 35).until(
 | 
						|
            EC.presence_of_element_located((MobileBy.XPATH,
 | 
						|
                                            "//*[@label='" + WifiName + "']")))
 | 
						|
        # //*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']
 | 
						|
        additional_details_element.click()
 | 
						|
 | 
						|
        try:
 | 
						|
            report.step_start("Checking SSID Name as Expected")
 | 
						|
            print("Checking SSID Name")
 | 
						|
            ssidname_text = driver.find_element_by_xpath("//*[@label='" + WifiName + "']").text
 | 
						|
            print(ssidname_text)
 | 
						|
            if(ssidname_text == WifiName):
 | 
						|
                print("SSID Matched")
 | 
						|
                allure.attach(name="SSID Matched ", body=str(WifiName))
 | 
						|
            else:
 | 
						|
                print("SSID Not Matched")
 | 
						|
                allure.attach(name="SSID Not Matched ", body=str(WifiName))
 | 
						|
                reportFlag = False
 | 
						|
                assert reportFlag
 | 
						|
        except:
 | 
						|
            print("SSID is not Checked in more Info")
 | 
						|
 | 
						|
        try:
 | 
						|
            report.step_start("Checking WiFi Address")
 | 
						|
            print("Checking WIFI address")
 | 
						|
            # (//*[@label="IP Address"]/parent::*/XCUIElementTypeStaticText)[2]
 | 
						|
            wifi_address_element_text = driver.find_element_by_xpath(
 | 
						|
                "(//*[@label='Wi-Fi Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
            print("wifi_address_element_text: ", wifi_address_element_text)
 | 
						|
            allure.attach(name="Connected SSID WiFi-Address: ", body=str(wifi_address_element_text))
 | 
						|
        except Exception as e:
 | 
						|
            print("WiFi-Address not Found")
 | 
						|
            allure.attach(name="No Connected SSID WiFi-Address Found")
 | 
						|
        try:
 | 
						|
            time.sleep(4)
 | 
						|
            report.step_start("Checking IP Address")
 | 
						|
            print("Checking IP address")
 | 
						|
            # (//*[@label="IP Address"]/parent::*/XCUIElementTypeStaticText)[2]
 | 
						|
            ip_address_element_text = driver.find_element_by_xpath(
 | 
						|
                "(//*[@label='IP Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
            print("ip_address_element_text: ", ip_address_element_text)
 | 
						|
        except Exception as e:
 | 
						|
            try:
 | 
						|
                time.sleep(4)
 | 
						|
                print("Scrolling for checking ip address")
 | 
						|
                scrollDown(setup_perfectoMobile)
 | 
						|
                ip_address_element_text = driver.find_element_by_xpath(
 | 
						|
                    "(//*[@label='IP Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
                print("ip_address_element_text: ", ip_address_element_text)
 | 
						|
            except:
 | 
						|
                print("IP Address not Found")
 | 
						|
                request.config.cache.set(key="select IP failed", value=str(e))
 | 
						|
 | 
						|
    except Exception as e:
 | 
						|
        request.config.cache.set(key="select additional info failed", value=str(e))
 | 
						|
    # ---------------------Additional INFO-------------------------------
 | 
						|
 | 
						|
    # --------------------- close app-------------------------------
 | 
						|
    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
    return ip_address_element_text, is_internet
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#------------------Gets the ip address of already connected ssid---------------------------------------
 | 
						|
def gets_ip_add_for_checking_and_forgets_ssid_ios(request, WifiName, WifiPass, setup_perfectoMobile, connData):
 | 
						|
    print("\n-------------------------------------")
 | 
						|
    print("Select Wifi/Get IP Address IOS Connection")
 | 
						|
    print("-------------------------------------")
 | 
						|
 | 
						|
    reportFlag = True
 | 
						|
    is_internet = False
 | 
						|
    ip_address_element_text = False
 | 
						|
 | 
						|
    print("Verifying Wifi/AP Connection Details....")
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    report.step_start("Switching Driver Context")
 | 
						|
    print("Switching Context to Native")
 | 
						|
    driver.switch_to.context('NATIVE_APP')
 | 
						|
    # driver.switch_to.context(contexts[0])
 | 
						|
 | 
						|
    report.step_start("Set Wifi Network to " + WifiName)
 | 
						|
    # Open Settings Application
 | 
						|
    openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
 | 
						|
    try:
 | 
						|
        time.sleep(2)
 | 
						|
        driver.implicitly_wait(2)
 | 
						|
        try:
 | 
						|
            print("Verifying Connected Wifi Connection")
 | 
						|
            report.step_start("Loading Wifi Page")
 | 
						|
            element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']")
 | 
						|
            element.click()
 | 
						|
        except NoSuchElementException:
 | 
						|
            print("Exception: Verify Xpath - unable to click on Wifi")
 | 
						|
 | 
						|
        time.sleep(2)
 | 
						|
        driver.implicitly_wait(2)
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
        try:
 | 
						|
            get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
            try:
 | 
						|
                if get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0:
 | 
						|
                    get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
 | 
						|
                    driver.implicitly_wait(1)
 | 
						|
                    get_wifi_switch_element.click()
 | 
						|
                    driver.implicitly_wait(1)
 | 
						|
                    i = 0
 | 
						|
                    for i in range(5):
 | 
						|
                        try:
 | 
						|
                            get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
 | 
						|
                            get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                        except:
 | 
						|
                            print("Switch is OFF")
 | 
						|
 | 
						|
                        if get_wifi_switch_element_text == "1" or get_wifi_switch_element_text == 1:
 | 
						|
                            print("WIFI Switch is ON")
 | 
						|
                            break
 | 
						|
                        else:
 | 
						|
                            try:
 | 
						|
                                get_wifi_switch_element = driver.find_element_by_xpath(
 | 
						|
                                    "//*[@label='Wi-Fi' and @value='0']")
 | 
						|
                                get_wifi_switch_element_text = get_wifi_switch_element.text
 | 
						|
                            except:
 | 
						|
                                print("WIFi switch is ON")
 | 
						|
                    if (get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0):
 | 
						|
                        print("switch is still OFF")
 | 
						|
                        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                        return ip_address_element_text, is_internet
 | 
						|
                else:
 | 
						|
                    print("Switch is Still OFF")
 | 
						|
                    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
                    return ip_address_element_text, is_internet
 | 
						|
            except:
 | 
						|
                print("No switch element found")
 | 
						|
        except:
 | 
						|
            print("get_wifi_switch_element is ON")
 | 
						|
        # --------------------To Turn on WIFi Switch if already OFF--------------------------------
 | 
						|
 | 
						|
    except:
 | 
						|
        print("Cannot find WIFI element")
 | 
						|
        closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
        return ip_address_element_text, is_internet
 | 
						|
 | 
						|
    # ---------------------Additional INFO-------------------------------
 | 
						|
    try:
 | 
						|
        print("Selecting SSID: ", WifiName)
 | 
						|
        report.step_start("Additional details of SSID")
 | 
						|
        additional_details_element = WebDriverWait(driver, 30).until(
 | 
						|
            EC.presence_of_element_located((MobileBy.XPATH,
 | 
						|
                                            "//*[@label='" + WifiName + "']")))
 | 
						|
        # //*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']
 | 
						|
        additional_details_element.click()
 | 
						|
 | 
						|
        try:
 | 
						|
            report.step_start("Checking SSID Name as Expected")
 | 
						|
            print("Checking SSID Name")
 | 
						|
            ssidname_text = driver.find_element_by_xpath("//*[@label='" + WifiName + "']").text
 | 
						|
            print(ssidname_text)
 | 
						|
            if(ssidname_text == WifiName):
 | 
						|
                print("SSID Matched")
 | 
						|
                allure.attach(name="SSID Matched ", body=str(WifiName))
 | 
						|
            else:
 | 
						|
                print("SSID Not Matched")
 | 
						|
                allure.attach(name="SSID Not Matched ", body=str(WifiName))
 | 
						|
                reportFlag = False
 | 
						|
                assert reportFlag
 | 
						|
        except:
 | 
						|
            print("SSID is not Checked in more Info")
 | 
						|
 | 
						|
        try:
 | 
						|
            report.step_start("Checking WiFi Address")
 | 
						|
            print("Checking WIFI address")
 | 
						|
            # (//*[@label="IP Address"]/parent::*/XCUIElementTypeStaticText)[2]
 | 
						|
            wifi_address_element_text = driver.find_element_by_xpath(
 | 
						|
                "(//*[@label='Wi-Fi Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
            print("wifi_address_element_text: ", wifi_address_element_text)
 | 
						|
            allure.attach(name="Connected SSID WiFi-Address: ", body=str(wifi_address_element_text))
 | 
						|
        except Exception as e:
 | 
						|
            print("WiFi-Address not Found")
 | 
						|
        try:
 | 
						|
            time.sleep(4)
 | 
						|
            report.step_start("Checking IP Address")
 | 
						|
            print("Checking IP address")
 | 
						|
            # (//*[@label="IP Address"]/parent::*/XCUIElementTypeStaticText)[2]
 | 
						|
            ip_address_element_text = driver.find_element_by_xpath(
 | 
						|
                "(//*[@label='IP Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
            print("ip_address_element_text: ", ip_address_element_text)
 | 
						|
        except Exception as e:
 | 
						|
            try:
 | 
						|
                time.sleep(4)
 | 
						|
                print("Scrolling for checking ip address")
 | 
						|
                scrollDown(setup_perfectoMobile)
 | 
						|
                ip_address_element_text = driver.find_element_by_xpath(
 | 
						|
                    "(//*[@label='IP Address']/parent::*/XCUIElementTypeStaticText)[2]").text
 | 
						|
                print("ip_address_element_text: ", ip_address_element_text)
 | 
						|
            except:
 | 
						|
                print("IP Address not Found")
 | 
						|
                request.config.cache.set(key="select IP failed", value=str(e))
 | 
						|
    except Exception as e:
 | 
						|
        request.config.cache.set(key="select additional info failed", value=str(e))
 | 
						|
    # ---------------------Additional INFO-------------------------------
 | 
						|
 | 
						|
    # --------------------- close app-------------------------------
 | 
						|
    closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
 | 
						|
    return ip_address_element_text, is_internet
 | 
						|
def getDeviceModelName(setup_perfectoMobile):
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
 | 
						|
    report.step_start("Device Model Name")
 | 
						|
    params = {'property': 'model'}
 | 
						|
    deviceModel = driver.execute_script('mobile:handset:info', params)
 | 
						|
    print("ModelName: " + deviceModel)
 | 
						|
    return deviceModel
 | 
						|
 | 
						|
def return_upload_download_speed_iOS(request, setup_perfectoMobile, get_APToMobileDevice_data):
 | 
						|
    print("\n-------------------------------------")
 | 
						|
    print("Verify Upload & Download Speed")
 | 
						|
    print("-------------------------------------")
 | 
						|
    time.sleep(5)
 | 
						|
 | 
						|
    report = setup_perfectoMobile[1]
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
    connData = get_APToMobileDevice_data
 | 
						|
    time.sleep(5)
 | 
						|
 | 
						|
    contexts = driver.contexts
 | 
						|
    # print("Printing Context")
 | 
						|
    # print(contexts)
 | 
						|
 | 
						|
    driver.switch_to.context('WEBVIEW_1')
 | 
						|
    time.sleep(5)
 | 
						|
    # try:
 | 
						|
    #     print("Launching Safari")
 | 
						|
    #     report.step_start("Google Home Page")
 | 
						|
    #     time.sleep(4)
 | 
						|
    #     driver.get(connData["webURL"])
 | 
						|
    #     print("Enter Search Text")
 | 
						|
    #     time.sleep(4)
 | 
						|
    #     driver.find_element_by_xpath("//*[@class='gLFyf']").send_keys("Internet speed test")
 | 
						|
    #     time.sleep(4)
 | 
						|
    #     driver.find_element_by_xpath("//*[@class='aajZCb']//*[@class='nz2CCf']/li[1]/div[1]/div[1]").click()
 | 
						|
    # except Exception as e:
 | 
						|
    #     print("Launching Safari Failed")
 | 
						|
    #     print(e)
 | 
						|
 | 
						|
    deviceModelName = getDeviceModelName(setup_perfectoMobile)
 | 
						|
    print("Selected Device Model: " + deviceModelName)
 | 
						|
    try:
 | 
						|
        if (deviceModelName!="iPhone-7"):
 | 
						|
            try:
 | 
						|
                print("Launching Safari")
 | 
						|
                report.step_start("Google Home Page")
 | 
						|
                time.sleep(4)
 | 
						|
                driver.get(connData["webURL"])
 | 
						|
                print("Enter Search Text")
 | 
						|
                time.sleep(4)
 | 
						|
                driver.find_element_by_xpath("//*[@class='gLFyf']").send_keys("Internet speed test")
 | 
						|
                time.sleep(4)
 | 
						|
                driver.find_element_by_xpath("//*[@class='aajZCb']//*[@class='nz2CCf']/li[1]/div[1]/div[1]").click()
 | 
						|
            except Exception as e:
 | 
						|
                print("Launching Safari Failed")
 | 
						|
                print(e)
 | 
						|
        else:
 | 
						|
            try:
 | 
						|
                print("Launching Safari for iPhone-7 trial 1")
 | 
						|
                report.step_start("Google Home Page for iPhone7")
 | 
						|
                time.sleep(4)
 | 
						|
                driver.get(connData["webURL"])
 | 
						|
                print("Enter Search Text")
 | 
						|
                time.sleep(4)
 | 
						|
                driver.find_element_by_xpath("//*[@label='search']/XCUIElementTypeOther[1]").send_keys(
 | 
						|
                    "Internet speed test")
 | 
						|
                time.sleep(4)
 | 
						|
                driver.find_element_by_xpath("//*[@name='Search']").click()
 | 
						|
 | 
						|
            except Exception as e:
 | 
						|
                print("Launching Safari for iPhone-7 trial 2")
 | 
						|
                try:
 | 
						|
                    driver.find_element_by_xpath("//*[@class='gLFyf']").send_keys("Internet speed test")
 | 
						|
                    time.sleep(4)
 | 
						|
                    driver.find_element_by_xpath("//*[@class='aajZCb']//*[@class='nz2CCf']/li[1]/div[1]/div[1]").click()
 | 
						|
                except Exception as e:
 | 
						|
                    print("Launching Safari Failed")
 | 
						|
                    try:
 | 
						|
                        print("Launching Safari")
 | 
						|
                        report.step_start("Launching Safari for iPhone-7 trial 3")
 | 
						|
                        time.sleep(4)
 | 
						|
                        driver.get(connData["webURL"])
 | 
						|
                        print("Enter Search Text")
 | 
						|
                        time.sleep(4)
 | 
						|
                        driver.find_element_by_xpath("//*[@label='Address']").send_keys("Internet speed test")
 | 
						|
                        time.sleep(4)
 | 
						|
                        driver.find_element_by_xpath("//*[@label='go']").click()
 | 
						|
                    except:
 | 
						|
                        print("Launching safari failed for iPhone-7")
 | 
						|
    except:
 | 
						|
        try:
 | 
						|
            report.step_start("Other Option For Search")
 | 
						|
            print("Finding search option")
 | 
						|
            driver.implicitly_wait(4)
 | 
						|
            driver.get(connData["webURL"])
 | 
						|
            print("Enter Search Text")
 | 
						|
            driver.implicitly_wait(4)
 | 
						|
            elementFindTxt = driver.find_element_by_xpath(connData["lblSearch"])
 | 
						|
            elementFindTxt.send_keys("Internet Speed Test")
 | 
						|
        except NoSuchElementException:
 | 
						|
            currentResult = False
 | 
						|
            print("Search Button Issue")
 | 
						|
 | 
						|
 | 
						|
    # try:
 | 
						|
    #     print("Click Search Button")
 | 
						|
    #     report.step_start("Click Search Button")
 | 
						|
    #     time.sleep(2)
 | 
						|
    #     driver.implicitly_wait(2)
 | 
						|
    #     # elelSearch = driver.find_element_by_xpath("//*[@class='aajZCb']/li[1]/div[1]")
 | 
						|
    #     elelSearch = driver.find_element_by_xpath("//*[@class='aajZCb']//*[@class='nz2CCf']/li[1]/div[2]")
 | 
						|
    #     elelSearch.click()
 | 
						|
    # except NoSuchElementException:
 | 
						|
    #     currentResult = False
 | 
						|
    #     print("Search Drop Down not active...")
 | 
						|
 | 
						|
    try:
 | 
						|
        print("Click Run Speed Test Button...")
 | 
						|
        report.step_start("Click Run Speed Test Button")
 | 
						|
        time.sleep(4)
 | 
						|
        driver.find_element_by_xpath(connData["BtnRunSpeedTest"]).click()
 | 
						|
    except NoSuchElementException:
 | 
						|
        currentResult = False
 | 
						|
        print("Run Speed Test Button element not found", NoSuchElementException)
 | 
						|
        return currentResult
 | 
						|
 | 
						|
    # Get upload/Download Speed
 | 
						|
    try:
 | 
						|
        report.step_start("Get upload/Download Speed")
 | 
						|
        time.sleep(60)
 | 
						|
        downloadMbps = driver.find_element_by_xpath(connData["downloadMbps"])
 | 
						|
        downloadSpeed = downloadMbps.text
 | 
						|
        print("Download: " + downloadSpeed + " Mbps")
 | 
						|
 | 
						|
        time.sleep(20)
 | 
						|
        UploadMbps = driver.find_element_by_xpath(connData["UploadMbps"])
 | 
						|
        uploadSpeed = UploadMbps.text
 | 
						|
        print("Upload: " + uploadSpeed + " Mbps")
 | 
						|
        allure.attach(name="Speed Test logs: ",
 | 
						|
                      body=str("Upload: " + uploadSpeed + " Mbps" + "  Download: " + downloadSpeed + " Mbps"))
 | 
						|
        print("Access Point Verification Completed Successfully")
 | 
						|
 | 
						|
    except NoSuchElementException:
 | 
						|
        print("Access Point Verification NOT Completed, checking Connection....")
 | 
						|
 | 
						|
    return downloadSpeed, uploadSpeed
 | 
						|
 | 
						|
def ookla_speed_test_iOS(request, setup_perfectoMobile, get_APToMobileDevice_data):
 | 
						|
    driver = setup_perfectoMobile[0]
 | 
						|
    driver.switch_to.context('NATIVE_APP')
 | 
						|
    openApp( 'com.ookla.speedtest', setup_perfectoMobile)
 | 
						|
    driver.find_element_by_xpath("//*[@label='GO']").click()
 | 
						|
    # Wait untill 2 minutes for the test to complete
 | 
						|
    WebDriverWait(driver, 120).until(
 | 
						|
            EC.presence_of_element_located((MobileBy.XPATH, "//*[@value='Test Again']")))
 | 
						|
    result = driver.find_element_by_xpath("//XCUIElementTypeOther[contains(@label,'Download Speed')]").text
 | 
						|
    print(result)
 | 
						|
    downloadSpeed = result.split('Download Speed, ')[1].split('. ')[0]
 | 
						|
    uploadSpeed = result.split('Upload speed, ')[1].split('. ')[0]
 | 
						|
    downloadSpeed = str(downloadSpeed)[0:4]
 | 
						|
    uploadSpeed = str(uploadSpeed)[0:4]
 | 
						|
    print(f"Download speed: {downloadSpeed}")
 | 
						|
    print(f"Upload speed: {uploadSpeed}")
 | 
						|
    return downloadSpeed, uploadSpeed |