Files
wlan-testing/libs/perfecto_libs/android_lib.py
2021-12-10 13:59:44 +05:30

3390 lines
174 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
Controller Library
1. controller_data/sdk_base_url
2. login credentials
"""
import datetime
import sys
import os
import time
import warnings
from _pytest.outcomes import xfail
import urllib3
from perfecto.model.model import Job, Project
from perfecto import (PerfectoExecutionContext, PerfectoReportiumClient,TestContext, TestResultFactory)
import pytest
import logging
import re
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from appium.webdriver.common.mobileby import MobileBy
from selenium.webdriver.support import expected_conditions as EC
from appium import webdriver
import allure
sys.path.append(
os.path.dirname(
os.path.realpath(__file__)
)
)
if "tests" not in sys.path:
sys.path.append(f'../../tests')
try:
from configparser import ConfigParser
except ImportError:
from ConfigParser import ConfigParser # ver. < 3.0
def openApp(appName, setup_perfectoMobile):
print("Refreshing App: " + appName)
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 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)
print("Closed App")
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 getDeviceID(setup_perfectoMobile):
report = setup_perfectoMobile[1]
driver = setup_perfectoMobile[0]
report.step_start("Get DeviceID")
params = {'property': 'deviceId'}
deviceID = driver.execute_script('mobile:handset:info', params)
print("DeviceID: " + deviceID)
return deviceID
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 set_APconnMobileDevice_android(request, WifiName, WifiPass, setup_perfectoMobile, connData):
print("\n-------------------------------------")
print("Select Wifi/AccessPoint Connection")
print("-------------------------------------")
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
driver.switch_to.context(contexts[0])
#Open Settings Application
openApp(connData["appPackage-android"], setup_perfectoMobile)
deviceModelName = getDeviceModelName(setup_perfectoMobile)
print ("Selected Device Model: " + deviceModelName)
if deviceModelName!=("Pixel 4"):
report.step_start("Set Wifi Network to " + WifiName)
try:
print("Verifying Connected Wifi Connection")
report.step_start("Click Connections")
connElement = driver.find_element_by_xpath("//*[@text='Connections']")
connElement.click()
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Connections")
try:
print("Get Connected Wifi Name if any")
report.step_start("Get Connected Wifi Name if any")
try:
driver.implicitly_wait(20)
WifiNameElement = driver.find_element_by_xpath("//*[@resource-id='android:id/summary']")
Wifi_AP_Name = WifiNameElement.text
print("Current Wifi Status Name: " + Wifi_AP_Name)
except NoSuchElementException:
report.step_start("Checking Wifi Radio Button Status")
try:
driver.implicitly_wait(5)
WifiRadioBtnConnections = driver.find_element_by_xpath("//*[@resource-id='android:id/switch_widget' and @content-desc='Wi-Fi' and @text='Off']")
report.step_start("Wifi Radio Button Disabled, Enabling Radio Button..")
print("Wifi Radio Button Disabled, Enabling Radio Button..")
WifiRadioBtnConnections.click()
except NoSuchElementException:
Wifi_AP_Name="Null"
driver.implicitly_wait(25)
report.step_start("Wifi Radio Button Already Enabled")
print("Wifi Radio Button Already Enabled")
except NoSuchElementException:
Wifi_AP_Name="Null"
print("Device not connected to any Wifi")
report.step_start("Clicking Wi-Fi")
wifiElement = driver.find_element_by_xpath("//*[@text='Wi-Fi']")
wifiElement.click()
Wifi_AP_Name=""
if Wifi_AP_Name.__eq__(WifiName):
print("Wifi Name Matches - Already Connected To: " + Wifi_AP_Name)
try:
report.step_start("Verify if Wifi is Connected")
WifiInternetErrMsg = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")
print("Wifi Successfully Connected")
except NoSuchElementException:
print("Wifi Connection Error: " + WifiName)
else:
#print("Set Wifi Radio Button to enabled")
#try:
# report.step_start("Set Wifi Radio Button to enabled")
# wifiRadioBtn = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/switch_widget' and @text='Wi-Fi, Off']")
# wifiRadioBtn.click()
# except NoSuchElementException:
# report.step_start("Set Wifi Radio Button Already enabled")
# print("Radio button Already Enabled")
print("Selecting Wifi: " + WifiName)
try:
report.step_start("Selecting Wifi: " + WifiName)
wifiSelectionElement = WebDriverWait(driver, 35).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='"+ WifiName + "']")))
wifiSelectionElement.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))
assert False
#Set password if Needed
try:
report.step_start("Set Wifi Password")
wifiPasswordElement = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/edittext']")
wifiPasswordElement.send_keys(WifiPass)
except NoSuchElementException:
print("Password Page Not Loaded, password May be cached in the System")
try:
report.step_start("Click Connect Button")
joinBTNElement = driver.find_element_by_xpath("//*[@text='Connect']")
joinBTNElement.click()
except NoSuchElementException:
print("Connect Button Not Enabled...Verify if Password is set properly ")
try:
report.step_start("Verify if Wifi is Connected")
WifiInternetErrMsg = WebDriverWait(driver, 60).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@resource-id='com.android.settings:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")))
print("Wifi Successfully Connected")
except NoSuchElementException:
print("Wifi Connection Error: " + WifiName)
else:
report.step_start("Set Wifi Network to Pixel" + WifiName)
try:
print("Click Network & Internet")
report.step_start("Click Network & Internet")
connElement = driver.find_element_by_xpath("//*[@text='Network & internet']")
connElement.click()
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Connections")
try:
print("Get Connected Wifi Name if any")
report.step_start("Get Connected Wifi Name if any")
WifiNameElement = WebDriverWait(driver, 35).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@resource-id='android:id/title' and @text='WiFi']/parent::*/android.widget.TextView[@resource-id='android:id/summary']")))
Wifi_AP_Name = WifiNameElement.text
print("Current Wifi Status Name: " + Wifi_AP_Name)
WifiNameElement.click()
except NoSuchElementException:
Wifi_AP_Name="Null"
print("Device not connected to any Wifi")
if Wifi_AP_Name.__eq__(WifiName):
print("Wifi Name Matches - Already Connected To: " + Wifi_AP_Name)
try:
report.step_start("Verify if Wifi is Connected")
WifiInternetErrMsg = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")
print("Wifi Successfully Connected")
except NoSuchElementException:
print("Wifi Connection Error: " + WifiName)
else:
print("Set Wifi Radio Button to enabled")
try:
report.step_start("Set Wifi Radio Button to enabled")
wifiRadioBtn = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/switch_widget' and @text='OFF']")
wifiRadioBtn.click()
except NoSuchElementException:
report.step_start("Set Wifi Radio Button Already enabled")
print("Radio button Already Enabled")
print("Selecting Wifi: " + WifiName)
try:
report.step_start("Selecting Wifi: " + WifiName)
wifiSelectionElement = WebDriverWait(driver, 35).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='"+ WifiName + "']")))
wifiSelectionElement.click()
except NoSuchElementException:
print("Exception on Selecting Wifi Network. Please check wifi Name or signal")
#Set password if Needed
try:
report.step_start("Set Wifi Password")
wifiPasswordElement = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/password']")
wifiPasswordElement.send_keys(WifiPass)
except NoSuchElementException:
print("Password Page Not Loaded, password May be cached in the System")
try:
report.step_start("Click Connect Button")
joinBTNElement = driver.find_element_by_xpath("//*[@resource-id='android:id/button1' and @text='Connect']")
joinBTNElement.click()
except NoSuchElementException:
print("Connect Button Not Enabled...Verify if Password is set properly ")
try:
report.step_start("Verify if Wifi is Connected")
WifiInternetErrMsg = WebDriverWait(driver, 35).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@resource-id='android:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")))
print("Wifi Successfully Connected")
except NoSuchElementException:
print("Wifi Connection Error: " + WifiName)
closeApp(connData["appPackage-android"], setup_perfectoMobile)
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)
#Open Settings Application
openApp(connData["appPackage-android"], setup_perfectoMobile)
deviceModelName = getDeviceModelName(setup_perfectoMobile)
print ("Selected Device Model: " + deviceModelName)
if deviceModelName!=("Pixel 4"):
report.step_start("Forget Existing Wifi" + WifiName)
try:
print("Verifying Connected Wifi Connection")
report.step_start("Click Connections")
connElement = driver.find_element_by_xpath("//*[@text='Connections']")
connElement.click()
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Connections")
try:
print("Connected Wifi Name if any")
report.step_start("Get Connected Wifi Name if any")
WifiNameElement = driver.find_element_by_xpath("//*[@resource-id='android:id/summary']")
Wifi_AP_Name = WifiNameElement.text
print("Connected to Wifi: " + Wifi_AP_Name)
except NoSuchElementException:
Wifi_AP_Name="Null"
print("Device not connected to any Wifi")
report.step_start("Clicking Wi-Fi")
wifiElement = driver.find_element_by_xpath("//*[@text='Wi-Fi']")
wifiElement.click()
if Wifi_AP_Name.__eq__(WifiName):
report.step_start("Wifi Name Matches - Already Connected To: " + Wifi_AP_Name)
print("Wifi Name Matches - Already Connected To: " + Wifi_AP_Name)
print("Load Wifi Details Page")
try:
report.step_start("Load Wifi Details Page")
WifiInternetDetails = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/wifi_details']")
WifiInternetDetails.click()
except NoSuchElementException:
print("Wifi Connection Error: " + WifiName)
print("Forget Wifi Network")
try:
report.step_start("Forget Wifi Network")
WifiForget= driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/smallLabel' and @text='Forget']")
WifiForget.click()
except NoSuchElementException:
print("Wifi Connection Error: " + WifiName)
print("Verify if wifi is disconnected from: " + WifiName)
try:
report.step_start("Verify if wifi is disconnected from: " + WifiName)
WifiDisconnect = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")
print("Wifi Not disconnected, check xpath for: " + WifiName)
assert False
except Exception as e:
assert True
print("Wifi Disconnected Successfully: " + WifiName)
else:
print("Wifi Does not Match with Wifi: " + WifiName)
report.step_start("Wifi Does not Match with Wifi: " + WifiName)
report.step_start("Probably wifi auto connected to another network")
try:
report.step_start("Wifi Details Page")
WifiInternetDetails = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/wifi_details']")
WifiInternetDetails.click()
except NoSuchElementException:
print("Wifi Connection Error: " + WifiName)
try:
report.step_start("Forget Wifi Network")
WifiForget= driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/smallLabel' and @text='Forget']")
WifiForget.click()
except NoSuchElementException:
print("Wifi Connection Error: " + WifiName)
print("Verify if wifi is disconnected from: " + WifiName)
try:
report.step_start("Verify if wifi is disconnected from: " + WifiName)
#WifiForget= driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")
print("Wifi Not disconnected, check xpath for: " + WifiName)
WifiForget = WebDriverWait(driver, 20).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@resource-id='com.android.settings:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")))
except Exception as e:
assert True
print("Wifi Disconnected Successfully: " + WifiName)
else:
#print("Pixel Custom Code")
report.step_start("Forget Wifi Network on Pixel" + WifiName)
try:
print("Click Network & Internet")
report.step_start("Click Network & Internet")
connElement = driver.find_element_by_xpath("//*[@text='Network & internet']")
connElement.click()
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Connections")
try:
print("Get Connected Wifi Name if any")
report.step_start("Get Connected Wifi Name if any")
WifiNameElement = WebDriverWait(driver, 35).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@resource-id='android:id/title' and @text='WiFi']/parent::*/android.widget.TextView[@resource-id='android:id/summary']")))
Wifi_AP_Name = WifiNameElement.text
print("Current Wifi Status Name: " + Wifi_AP_Name)
WifiNameElement.click()
except NoSuchElementException:
Wifi_AP_Name="Null"
print("Device not connected to any Wifi")
#print("Wifi Name Matches - Already Connected To: " + Wifi_AP_Name)
try:
report.step_start("Wifi More information")
WifiInternetMoreSettings = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/settings_button_no_background']")
WifiInternetMoreSettings.click()
except NoSuchElementException:
print("Wifi Not Connected to any Wifi Error: " + WifiName)
try:
report.step_start("Forget Wifi Network")
WifiInternetMoreSettings = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/button1' and @text='Forget']")
WifiInternetMoreSettings.click()
except NoSuchElementException:
print("Wifi Connection Error: " + WifiName)
try:
report.step_start("Verify if Wifi is Connected")
WifiInternetErrMsg = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")
print("Forgot Wifi Error, check xpath")
except Exception as e:
print("Wifi Disconnected Successfully: " + WifiName)
closeApp(connData["appPackage-android"], setup_perfectoMobile)
def Toggle_AirplaneMode_android(request, setup_perfectoMobile, connData):
print("\n-----------------------")
print("Toggle Airplane Mode")
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)
#Open Settings Application
openApp(connData["appPackage-android"], setup_perfectoMobile)
deviceModelName = getDeviceModelName(setup_perfectoMobile)
print ("Selected Device Model: " + deviceModelName)
airplaneFlag = False
report.step_start("Click Connections")
try:
print("Verifying Connected Wifi Connection")
report.step_start("Click Connections")
connElement = driver.find_element_by_xpath("//*[@text='Connections']")
connElement.click()
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Connections")
try:
report.step_start("Toggle Airplane Mode to On")
print("Toggle Airplane Mode to On")
ToggleAirplanEle = driver.find_element_by_xpath("//*[@content-desc='Airplane mode' and @text='Off']")
ToggleAirplanEle.click()
airplaneFlag = True
print("Toggle Airplane Mode to Off")
ToggleAirplanEle2 = driver.find_element_by_xpath("//*[@content-desc='Airplane mode' and @text='On']")
ToggleAirplanEle2.click()
except NoSuchElementException:
print("Toggle Airplane Exception, Airplane mode may be on Already.")
try:
print("Checking to see if Airplane is already enabled")
report.step_start("Checking to see if Airplane is already enabled")
connElement = driver.find_element_by_xpath("//*[@content-desc='Airplane mode' and @text='On']")
airplaneFlag = True
report.step_start("Disable Airplane Mode")
connElement.click()
except NoSuchElementException:
print("Airplane Mode is On & Off status elements Error, please check xpath or if the Page Loaded")
return airplaneFlag
def Toggle_WifiMode_android(request, setup_perfectoMobile, WifiName, connData):
print("\n-----------------------")
print("Toggle Wifi Mode")
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)
#Open Settings Application
openApp(connData["appPackage-android"], setup_perfectoMobile)
deviceModelName = getDeviceModelName(setup_perfectoMobile)
print ("Selected Device Model: " + deviceModelName)
WifiFlag = False
try:
report.step_start("Click Connections")
print("Click Connections")
connElement = driver.find_element_by_xpath("//*[@text='Connections']")
connElement.click()
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Connections")
try:
print("Get Connected Wifi Name if any")
report.step_start("Get Connected Wifi Name if any")
WifiNameElement = driver.find_element_by_xpath("//*[@resource-id='android:id/summary']")
Wifi_AP_Name = WifiNameElement.text
print("Current Wifi Status Name: " + Wifi_AP_Name)
except NoSuchElementException:
Wifi_AP_Name="Null"
print("Device not connected to any Wifi")
print("Current Selected Wifi: " + Wifi_AP_Name)
report.step_start("Current Selected Wifi: " + Wifi_AP_Name)
try:
report.step_start("Disable Wifi Radio Button")
print("Disable Wifi Radio Button")
connElement = driver.find_element_by_xpath("//*[@content-desc='Wi-Fi' and @text='On']")
connElement.click()
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Wifi Radio Button")
try:
print("Get Connected Wifi Name if any after Wifi Radio is disabled")
report.step_start("Get Connected Wifi Name if any after Wifi Radio is disabled")
WifiNameElement = driver.find_element_by_xpath("//*[@resource-id='android:id/summary']")
Wifi_AP_Name2 = WifiNameElement.text
print("Device Connected to Wifi: " + Wifi_AP_Name2)
except NoSuchElementException:
Wifi_AP_Name2="Null"
print("Device connected to Wifi: " + Wifi_AP_Name2)
try:
report.step_start("Enable Wifi Radio Button")
print("Enable Wifi Radio Button")
wifiRadioBTN_Off = driver.find_element_by_xpath("//*[@content-desc='Wi-Fi' and @text='Off']")
wifiRadioBTN_Off.click()
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Wifi Radio Button")
try:
print("Get Connected Wifi Name if any after Wifi Radio is Enabled")
report.step_start("Get Connected Wifi Name if any after Wifi Radio is disabled")
WifiNameElement3 = WebDriverWait(driver, 35).until(EC.presence_of_element_located((MobileBy.XPATH, "//*[@resource-id='android:id/summary']")))
Wifi_AP_Name3 = WifiNameElement3.text
print("Current Wifi Status Name: " + Wifi_AP_Name3)
except NoSuchElementException and TimeoutException:
Wifi_AP_Name3="Null"
print("Device did not connect back to Wifi: " + WifiName)
if Wifi_AP_Name3.__eq__(WifiName):
WifiFlag = True
else:
WifiFlag = False
return WifiFlag
def verifyUploadDownloadSpeed_android(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=False
driver.switch_to.context('WEBVIEW_1')
try:
print("Launching Chrome")
report.step_start("Google Home Page")
driver.get(connData["webURL"])
print("Enter Search Text")
elementFindTxt = driver.find_element_by_xpath(connData["lblSearch"])
elementFindTxt.send_keys("Internet Speed Test")
except Exception as e:
print("Launching Safari Failed")
print (e)
# allure.attach(name="Speed Test logs: ", body=str("Launching Safari Failed"))
# allure.attach(name="Speed Test logs: ", body=str("Error log: " + e))
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']//*[@class='nz2CCf']/li[1]/div[2]")
elelSearch.click()
except:
try:
time.sleep(2)
driver.implicitly_wait(2)
elelSearch = driver.find_element_by_xpath("//*[@class='aajZCb']//*[@class='nz2CCf']/li[1]/div[2]")
elelSearch.click()
except:
print("Search Drop Down not active...")
return False
try:
print("Click Run Speed Test Button...")
report.step_start("Click Run Speed Test Button")
driver.find_element_by_xpath(connData["BtnRunSpeedTest"]).click()
except NoSuchElementException:
print("Error in speed test element ", NoSuchElementException)
# allure.attach(name="Speed Test logs: ", body=str("Search Run Speed Test not active..." + NoSuchElementException))
return False
#Get upload/Download Speed
try:
print("Get Download Speed")
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")
print("Get Upload Speed")
report.step_start("Get Upload Speed")
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")
currentResult = True
except NoSuchElementException:
print("Access Point Verification NOT Completed, checking Connection....")
return currentResult
def downloadInstallOpenRoamingProfile(request, profileDownloadURL, setup_perfectoMobile, connData):
print("\n-------------------------------------")
print("Installing Android Profile ")
print("-------------------------------------")
OpenRoamingWifiName = ""
report = setup_perfectoMobile[1]
driver = setup_perfectoMobile[0]
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")
#//*[@resource-id="android:id/button1"]
#Open Settings Application
#openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
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
#Open Settings Application
openApp(connData["appPackage-android"], setup_perfectoMobile)
deviceModelName = getDeviceModelName(setup_perfectoMobile)
if deviceModelName!=("Pixel 4"):
#Not a pixel Device
print ("Selected Device Model: " + deviceModelName)
report.step_start("Forget Profile: " + profileName)
# three dotss
#//*[@resource-id='com.android.settings:id/round_corner']
try:
print("Click Connections")
report.step_start("Click Connections")
connElement = driver.find_element_by_xpath("//*[@text='Connections']")
connElement.click()
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Connections")
try:
report.step_start("Clicking Wi-Fi")
wifiElement = driver.find_element_by_xpath("//*[@text='Wi-Fi']")
wifiElement.click()
except NoSuchElementException:
print("Exception: Clicking Wi-Fi - Update/check Xpath for Click Wifi Connection ")
try:
print ("Click Advanced Menu 3 Dot")
report.step_start("Click Advanced Menu 3 Dot")
ThreeDotMenuBtn = driver.find_element_by_xpath("//*[@content-desc='More options']")
ThreeDotMenuBtn.click()
except NoSuchElementException:
print("Exception: Click Advanced Menu Not Loaded")
# Click Advanced
# //*[@text='Advanced']
try:
print ("Click Advanced")
report.step_start("Click Advanced")
AdvBtn = driver.find_element_by_xpath("//*[@text='Advanced']")
AdvBtn.click()
except NoSuchElementException:
print("Exception: Click Advanced")
#Scroll Down
scrollDown(setup_perfectoMobile)
#Click HotSpot
#//*[@text="Hotspot 2.0"]
try:
print ("Click HotSpot")
report.step_start("Click HotSpot")
HotSpotBtn = driver.find_element_by_xpath("//*[@text='Hotspot 2.0']")
HotSpotBtn.click()
except NoSuchElementException:
print("Exception: Click HotSpot")
#Click Ameriband
#//*[@text="Ameriband"]
try:
print ("Click Ameriband")
report.step_start("Click Ameriband")
AmeribandXpath = "//*[@text='Ameriband']"
AmeribandBtn = WebDriverWait(driver, 25).until(EC.presence_of_element_located((MobileBy.XPATH, AmeribandXpath)))
AmeribandBtn.click()
except NoSuchElementException and TimeoutException and Exception:
report.step_start("Exception: Profile Don't Exist")
print("Exception: Profile Don't Exist")
#Click Forget
#//*[@resource-id="com.android.settings:id/icon"]
try:
print ("Click Forget")
report.step_start("Click Forget")
ForgetBTN = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/icon']")
ForgetBTN.click()
except NoSuchElementException:
print("Exception: Click Forget")
#Click Forget Confirm
#//*[@resource-id="android:id/button1"]
try:
print ("Click Forget Confirm")
report.step_start("Click Forget Confirm")
ForgetConfirm = driver.find_element_by_xpath("//*[@resource-id='android:id/button1']")
ForgetConfirm.click()
except NoSuchElementException:
print("Exception: Click Forget Confirm")
else:
#Pixel Device
print ("Pixel Device Not supported: " + deviceModelName)
report.step_start("Pixel Device Not supported: ")
assert False
closeApp(connData["appPackage-android"], setup_perfectoMobile)
def verify_APconnMobileDevice_Android(request, profileNameSSID, setup_perfectoMobile, connData):
print("\n-----------------------------")
print("Verify Connected Network ")
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
#Open Settings Application
openApp(connData["appPackage-android"], setup_perfectoMobile)
deviceModelName = getDeviceModelName(setup_perfectoMobile)
if deviceModelName!=("Pixel 4"):
#Not a pixel Device
print ("Selected Device Model: " + deviceModelName)
report.step_start("Click Connections")
try:
print("Click Connections")
report.step_start("Click Connections")
connElement = driver.find_element_by_xpath("//*[@text='Connections']")
connElement.click()
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Connections")
print("Clicking Wi-Fi")
report.step_start("Clicking Wi-Fi")
wifiElement = driver.find_element_by_xpath("//*[@text='Wi-Fi']")
wifiElement.click()
try:
print("Verify if Wifi is Connected to: " + profileNameSSID)
report.step_start("Verify if Wifi is Connected: " + profileNameSSID)
#WifiInternetErrMsg = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + profileNameSSID + "']")
WifiInternetErrMsg = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='Ameriband']")
print("Wifi Successfully Connected")
except NoSuchElementException:
print("Wifi Connection Error: " + profileNameSSID)
report.step_start("Wifi Connection Error: " + profileNameSSID)
assert False
else:
#Pixel Device
print ("Pixel Device Not supported: " + deviceModelName)
report.step_start("Pixel Device Not supported: ")
assert False
closeApp(connData["appPackage-android"], setup_perfectoMobile)
# Cache_clear Function
def cache_clear_android(request, setup_perfectoMobile, connData):
print("\n-------------------------------------")
print("Select Cache Clear")
print("-------------------------------------")
report = setup_perfectoMobile[1]
driver = setup_perfectoMobile[0]
report.step_start("Switching Driver Context")
print("Switching Context to Native")
contexts = driver.contexts
driver.switch_to.context(contexts[0])
# Open Settings Application
openApp(connData["appPackage-android"], setup_perfectoMobile)
deviceModelName = getDeviceModelName(setup_perfectoMobile)
print("Selected Device Model: " + deviceModelName)
if deviceModelName != ("Pixel 4" and "Galaxy S9"):
try:
print("Clicking Search button")
report.step_start("Click Search")
conn_ele = driver.find_element_by_xpath("//*[@content-desc='Search']")
conn_ele.click()
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Search")
try:
driver.implicitly_wait(30)
print("Entering Chrome in Search")
report.step_start("Entering text Chrome")
search_ele = driver.find_element_by_xpath("//*[@resource-id='com.android.settings.intelligence:id/search_src_text']")
search_ele.send_keys("chrome")
except Exception as e:
print("Exception: Entering chrome failed")
print(e)
try:
driver.implicitly_wait(40)
print("Clicking Chrome App Info")
report.step_start("Click Chrome App Info")
chrome_ele = driver.find_element_by_xpath("//*[@text='Chrome']")
chrome_ele.click()
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Chrome")
# Scroll Down
scrollDown(setup_perfectoMobile)
try:
driver.implicitly_wait(30)
print("Clicking Storage")
report.step_start("Click Storage")
store_ele = driver.find_element_by_xpath("//*[@text='Storage']")
store_ele.click()
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Storage")
try:
driver.implicitly_wait(30)
print("Clicking Clear Cache")
report.step_start("Click Clear Cache")
clear_ele = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/button2']")
clear_ele.click()
print("Cleared Cache")
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Clearcache")
try:
driver.implicitly_wait(30)
print("Checking if cache cleared or not with 0B")
report.step_start("Checking if cache cleared or not with 0B")
check_ele = driver.find_element_by_xpath("//*[@text='0 B']")
if check_ele is not None:
return True
else:
return False
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Checking cache clear")
elif deviceModelName == ("Pixel 4"):
# Pixel cache clear code
try:
print("Clicking Search button")
report.step_start("Click Search")
conn_ele = driver.find_element_by_xpath("//*[@class='android.widget.ImageButton']")
conn_ele.click()
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Search")
try:
driver.implicitly_wait(30)
print("Entering Chrome in Search")
report.step_start("Entering text Chrome")
search_ele = driver.find_element_by_xpath("//*[@resource-id='android:id/search_src_text']")
search_ele.send_keys("chrome")
except Exception as e:
print("Exception: Entering chrome failed")
print(e)
try:
driver.implicitly_wait(35)
print("Clicking Chrome App Info")
report.step_start("Click Chrome App Info")
chrom_ele = driver.find_element_by_xpath("//*[@text='Chrome']")
chrom_ele.click()
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Chrome")
try:
driver.implicitly_wait(30)
print("Clicking Storage & cache")
report.step_start("Click Storage & cache")
store_ele = driver.find_element_by_xpath("//*[@text='Storage & cache']")
store_ele.click()
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Storage & cache")
try:
driver.implicitly_wait(30)
print("Clicking Clear Cache")
report.step_start("Click Clear Cache")
clear_ele = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/button2']")
clear_ele.click()
print("Cleared cache")
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Clearcache")
try:
driver.implicitly_wait(30)
print("Checking if cache cleared or not with 0B")
report.step_start("Checking if cache cleared or not with 0B")
store_ele = driver.find_element_by_xpath("//*[@text='0 B']")
if store_ele is not None:
return True
else:
return False
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Checking cache clear")
else:
try:
print("Clicking Search button")
report.step_start("Click Search")
conn_ele = driver.find_element_by_xpath("//*[@content-desc='Search settings']")
conn_ele.click()
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Search")
try:
driver.implicitly_wait(30)
print("Entering Chrome in Search")
report.step_start("Entering text Chrome")
search_ele = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings.intelligence:id/search_src_text']")
search_ele.send_keys("chrome")
except Exception as e:
print("Exception: Entering chrome failed")
print(e)
try:
driver.implicitly_wait(40)
print("Clicking Chrome App Info")
report.step_start("Click Chrome App Info")
chrome_ele = driver.find_element_by_xpath("//*[@text='Chrome']")
chrome_ele.click()
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Chrome")
# Scroll Down
scrollDown(setup_perfectoMobile)
try:
driver.implicitly_wait(30)
print("Clicking Storage")
report.step_start("Click Storage")
store_ele = driver.find_element_by_xpath("//*[@text='Storage']")
store_ele.click()
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Storage")
try:
driver.implicitly_wait(30)
print("Clicking Clear Cache")
report.step_start("Click Clear Cache")
clear_ele = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/button2']")
clear_ele.click()
print("Cleared Cache")
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Clearcache")
try:
driver.implicitly_wait(30)
print("Checking if cache cleared or not with 0B")
report.step_start("Checking if cache cleared or not with 0B")
check_ele = driver.find_element_by_xpath("//*[@text='0 B']")
if check_ele is not None:
return True
else:
return False
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Checking cache clear")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
def check_if_no_internet_popup(driver):#To check and kill if any popups related to no internet
time.sleep(1)
driver.implicitly_wait(1)
try:
popup = driver.find_element_by_xpath("//*[@resource-id='android:id/alertTitle']")
popup_text = popup.text
try:
if popup_text == "Internet may not be available":
print("**alert** popup **alert**")
try:
driver.implicitly_wait(2)
time.sleep(2)
kill_popup = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/keep_btn']")
kill_popup.click()
print("popup killed")
except:
print("Couldnt kill popup")
return False
else:
print("Popup Text is: ", popup_text)
print("popup element is: ",popup)
return False
except:
print("Popup Text is: ", popup_text)
print("popup element is: ", popup)
return False
except:
pass
#To get an IP address
def get_ip_address_and(request, WifiName, WifiPass, setup_perfectoMobile, connData):
print("\n-------------------------------------")
print("Select Wifi/AccessPoint Connection")
print("-------------------------------------")
print("Verifying Wifi Connection Details....")
report = setup_perfectoMobile[1]
driver = setup_perfectoMobile[0]
ip_address_element_text = False
ssid_with_internet = False
report.step_start("Switching Driver Context")
print("Switching Context to Native")
contexts = driver.contexts
driver.switch_to.context(contexts[0])
# Open Settings Application
openApp(connData["appPackage-android"], setup_perfectoMobile)
deviceModelName = getDeviceModelName(setup_perfectoMobile)
print("Selected Device Model: " + deviceModelName)
if deviceModelName != ("Pixel 4"):
report.step_start("Set Wifi Network to " + WifiName)
# -----------------To Open Connections page-----------------------
try:
print("Verifying Connected Wifi Connection")
report.step_start("Click Connections")
connElement = driver.find_element_by_xpath("//*[@text='Connections']")
connElement.click()
# ---------------------Open WIFI page-------------------------------
try:
report.step_start("Clicking Wi-Fi")
print("Clicking WIFI")
time.sleep(3)
wifiElement = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((MobileBy.XPATH,"//*[@text='Wi-Fi']")))
wifiElement.click()
# --------------------To Turn on WIFi Switch if already OFF--------------------------------
try:
driver.implicitly_wait(1)
get_switch_text_element = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/switch_text']")
get_switch_text = get_switch_text_element.text
print("get_switch_text: ",get_switch_text)
print("Find wifi switch")
try: #To Turn on Wi-Fi Switch
if get_switch_text == "Off":
# driver.implicitly_wait(3)
get_switch_element = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/switch_widget']")
driver.implicitly_wait(1)
get_switch_element.click()
driver.implicitly_wait(1)
i = 0
for i in range(5):
if get_switch_text == "On":
print("WIFI Switch is ON")
break
else:
try:
get_switch_text_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/switch_text']")
get_switch_text = get_switch_text_element.text
except:
pass
print("Sleeping for: ", i)
time.sleep(i)
pass
if get_switch_text == "Off":
print("Switch is Still OFF")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ip_address_element_text, ssid_with_internet
else:
print("Switch is already On")
check_if_no_internet_popup(driver)
except:
print("Couldn't turn on WIFI switch")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ip_address_element_text, ssid_with_internet
#---------------------This is to Forget current connected SSID-------------------------------
try: #To deal with already connected SSID
check_if_no_internet_popup(driver)
network_category = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/connected_network_category']")
try: #To forget exhisting ssid
print("To forget ssid")
check_if_no_internet_popup(driver)
additional_details_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/layout_details']")
additional_details_element.click()
try:
check_if_no_internet_popup(driver)
forget_ssid = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/forget_button']//*[@resource-id='com.android.settings:id/icon']")
forget_ssid.click()
print("Forget old ssid")
except:
print("Couldn't forget ssid")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ip_address_element_text, ssid_with_internet
except:
print("Couldn't get into additional details")
except:
print("No Connected SSIDS")
#----------------------This is to Forget current connected SSID--------------------------------
# time.sleep(2)
print("Selecting Wifi: " + WifiName)
#allure.attach(name= body=str("Selecting Wifi: " + WifiName))
ssid_found = False
available_ssids = False
#This is To get all available ssids
#------------------------------------------------------
try:
for k in range(9):
available_ssids = get_all_available_ssids(driver)
print("active_ssid_list: ", available_ssids)
allure.attach(name="Available SSIDs in device: ", body=str(available_ssids))
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:
print("couldn't find wifi in available ssid")
if not ssid_found:
print("could not found " + WifiName + " in device")
#allure.attach(name= body=str("could not found" + WifiName + " in device"))
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ip_address_element_text, ssid_with_internet
except:
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ip_address_element_text, ssid_with_internet
#-------------------------------------------------------
#Selecting WIFI
# -------------------------------------------------------
try:
report.step_start("Selecting Wifi: " + WifiName)
wifiSelectionElement = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='" + WifiName + "']")))
wifiSelectionElement.click()
check_if_no_internet_popup(driver)
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))
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ip_address_element_text, ssid_with_internet
# -------------------------------------------------------
#Set password if Needed
# -------------------------------------------------------
try:
check_if_no_internet_popup(driver)
report.step_start("Set Wifi Password")
wifiPasswordElement = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/edittext']")
wifiPasswordElement.send_keys(WifiPass)
except NoSuchElementException:
print("Password Page Not Loaded, password May be cached in the System")
check_if_no_internet_popup(driver)
# -------------------------------------------------------
#Click on connect button
# -------------------------------------------------------
try:
report.step_start("Click Connect Button")
joinBTNElement = driver.find_element_by_xpath("//*[@text='Connect']")
joinBTNElement.click()
except NoSuchElementException:
print("Connect Button Not Enabled...Verify if Password is set properly ")
check_if_no_internet_popup(driver)
# -------------------------------------------------------
#Verify if WiFi is connected
# -------------------------------------------------------
try:
report.step_start("Verify if Wifi is Connected")
WifiInternetErrMsg = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH,
"//*[@resource-id='android:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")))
ssid_with_internet = True
print("Wifi Successfully Connected")
# time.sleep(5)
check_if_no_internet_popup(driver)
except:
try:
check_if_no_internet_popup(driver)
WifiInternetErrMsg = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH,
"//*[@resource-id='com.android.settings:id/summary' and @text='Connected without internet']/parent::*/android.widget.TextView[@text='"
+ WifiName + "']")))
print("Wifi Successfully Connected without internet")
check_if_no_internet_popup(driver)
except:
try:
report.step_start("Verify if Wifi is Connected")
WifiInternetErrMsg = WebDriverWait(driver, 60).until(EC.presence_of_element_located((
MobileBy.XPATH,
"//*[@resource-id='com.android.settings:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")))
ssid_with_internet = True
print("Wifi Successfully Connected")
except NoSuchElementException:
print("Wifi Connection Error: " + WifiName)
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ip_address_element_text, ssid_with_internet
# -------------------------------------------------------
#Get into Additional Details
#To Get an IP Address
#To Forget connection
#To turn off auto. connect
# -------------------------------------------------------
try:
print("Into additional details")
time.sleep(2)
additional_details_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/layout_details']")
additional_details_element.click()
try:
time.sleep(2)
ip_address_element = driver.find_element_by_xpath(
"//*[@text='IP address']/parent::*/android.widget.TextView[@resource-id='com.android.settings:id/summary']")
ip_address_element_text = ip_address_element.text
print("Device IP address is :", ip_address_element_text)
except:
try:
time.sleep(2)
ip_address_element = driver.find_element_by_xpath(
"//*[@text='IP address']/parent::*/android.widget.TextView[@resource-id='android:id/summary']")
ip_address_element_text = ip_address_element.text
print("Device IP address is :", ip_address_element_text)
except:
print("IP address element not found")
#allure.attach(name= body=str("IP address element not found"))
# closeApp(connData["appPackage-android"], setup_perfectoMobile)
# return ip_address_element_text, ssid_with_internet
try:
check_if_no_internet_popup(driver)
driver.implicitly_wait(3)
time.sleep(2)
auto_reconnect_off = driver.find("//*[@resource-id='android:id/switch_widget']")
auto_reconnect_off_text = auto_reconnect_off.text
if auto_reconnect_off_text != "Off":
auto_reconnect_off.click()
print("Auto reconnect turning off")
else:
print("Auto reconnect is already off")
except:
print("Couldn't find auto reconnect element")
# ------------------------------- Forget SSID ----------------
try:
check_if_no_internet_popup(driver)
forget_ssid = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/forget_button']//*[@resource-id='com.android.settings:id/icon']")
forget_ssid.click()
print("Forgetting ssid")
#------------------------------- Wifi Switch ----------------
try:
print("clicking on wifi switch")
get_switch_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/switch_widget']")
driver.implicitly_wait(2)
get_switch_element.click()
except:
print("couldn't click on wifi switch")
#allure.attach(name= body=str("couldn't click on wifi switch"))
except:
print("Couldn't forget ssid")
# closeApp(connData["appPackage-android"], setup_perfectoMobile)
# return ip_address_element_text, ssid_with_internet
except:
print("Couldn't get into Additional settings")
# -------------------------------------------------------
except:
print("No Switch element found")
# ---------------------To Turn on WIFi Switch if already OFF-------------------------------
except:
print("Couldn't find wifi Button")
# ------------------Open WIFI page----------------------------------
except:
print("Exception: Verify Xpath - Update/check Xpath for Click Connections")
# -----------------To Open Connections page---------------------------
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ip_address_element_text, ssid_with_internet
#only to connect to wifi
def wifi_connect(request, WifiName, WifiPass, setup_perfectoMobile, connData):
print("\n-------------------------------------")
print("Select Wifi/AccessPoint Connection")
print("-------------------------------------")
print("Verifying Wifi Connection Details....")
#allure.attach(name= body=str("\n-------------------------------------"))
report = setup_perfectoMobile[1]
driver = setup_perfectoMobile[0]
ssid_with_internet = False
report.step_start("Switching Driver Context")
print("Switching Context to Native")
contexts = driver.contexts
driver.switch_to.context(contexts[0])
# Open Settings Application
openApp(connData["appPackage-android"], setup_perfectoMobile)
deviceModelName = getDeviceModelName(setup_perfectoMobile)
print("Selected Device Model: " + deviceModelName)
#allure.attach(name= body=str("\Selected Device Model: " + deviceModelName))
if deviceModelName != ("Pixel 4"):
report.step_start("Set Wifi Network to " + WifiName)
# -----------------To Open Connections page-----------------------
try:
print("Verifying Connected Wifi Connection")
report.step_start("Click Connections")
connElement = driver.find_element_by_xpath("//*[@text='Connections']")
connElement.click()
# ---------------------Open WIFI page-------------------------------
try:
report.step_start("Clicking Wi-Fi")
print("Clicking WIFI")
wifiElement = driver.find_element_by_xpath("//*[@text='Wi-Fi']")
wifiElement.click()
# --------------------To Turn on WIFi Switch if already OFF--------------------------------
try:
driver.implicitly_wait(1)
get_switch_text_element = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/switch_text']")
get_switch_text = get_switch_text_element.text
print("get_switch_text: ",get_switch_text)
print("Find wifi switch")
try: #To Turn on Wi-Fi Switch
if get_switch_text == "Off":
# driver.implicitly_wait(3)
get_switch_element = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/switch_widget']")
driver.implicitly_wait(1)
get_switch_element.click()
driver.implicitly_wait(1)
i = 0
for i in range(5):
if get_switch_text == "On":
print("WIFI Switch is ON")
break
else:
try:
get_switch_text_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/switch_text']")
get_switch_text = get_switch_text_element.text
except:
pass
print("Sleeping for: ", i)
time.sleep(i)
pass
if get_switch_text == "Off":
print("Switch is Still OFF")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
else:
print("Switch is already On")
check_if_no_internet_popup(driver)
except:
print("Couldn't turn on WIFI switch")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
#---------------------This is to Forget current connected SSID-------------------------------
try: #To deal with already connected SSID
check_if_no_internet_popup(driver)
network_category = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/connected_network_category']")
try: #To forget exhisting ssid
print("To forget ssid")
check_if_no_internet_popup(driver)
additional_details_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/layout_details']")
additional_details_element.click()
try:
check_if_no_internet_popup(driver)
forget_ssid = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/forget_button']//*[@resource-id='com.android.settings:id/icon']")
forget_ssid.click()
print("Forget old ssid")
except:
print("Couldn't forget ssid")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
except:
print("Couldn't get into additional details")
except:
print("No Connected SSIDS")
#----------------------This is to Forget current connected 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
# This is To get all available ssids
# ------------------------------------------------------
try:
for check_for_all_ssids in range(2):
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:
print("1538")
pass
if not ssid_found:
print("could not found" + WifiName + " in device")
#allure.attach(name= body=str("could not found" + WifiName + " in device"))
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
except:
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
# -------------------------------------------------------
#Selecting WIFI
# -------------------------------------------------------
try:
report.step_start("Selecting Wifi: " + WifiName)
wifiSelectionElement = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='" + WifiName + "']")))
wifiSelectionElement.click()
check_if_no_internet_popup(driver)
#allure.attach(name= body=str("Selecting Wifi: " + WifiName))
except Exception as e:
print("Exception on Selecting Wifi Network. Please check wifi Name or signal")
#allure.attach(name= body=str("Exception on Selecting Wifi Network. Please check wifi Name or signal"))
request.config.cache.set(key="SelectingWifiFailed", value=str(e))
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
# -------------------------------------------------------
#Set password if Needed
# -------------------------------------------------------
try:
check_if_no_internet_popup(driver)
report.step_start("Set Wifi Password")
wifiPasswordElement = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/edittext']")
wifiPasswordElement.send_keys(WifiPass)
except NoSuchElementException:
print("Password Page Not Loaded, password May be cached in the System")
check_if_no_internet_popup(driver)
# -------------------------------------------------------
#Click on connect button
# -------------------------------------------------------
try:
report.step_start("Click Connect Button")
joinBTNElement = driver.find_element_by_xpath("//*[@text='Connect']")
joinBTNElement.click()
except NoSuchElementException:
print("Connect Button Not Enabled...Verify if Password is set properly ")
check_if_no_internet_popup(driver)
# -------------------------------------------------------
# //*[@resource-id='com.android.settings:id/summary' and @text="Sign in to the network."]/parent::*/android.widget.TextView[@text='XWF-OWF_DSx']
#Verify if WiFi is connected
# -------------------------------------------------------
try:
report.step_start("Verify if Wifi is Connected")
WifiInternetErrMsg = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH,
"//*[@resource-id='android:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")))
ssid_with_internet = True
print("Wifi Successfully Connected")
#allure.attach(name= body=str("Wifi Successfully Connected"))
# time.sleep(5)
check_if_no_internet_popup(driver)
except:
try:
check_if_no_internet_popup(driver)
WifiInternetErrMsg = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH,
"//*[@resource-id='com.android.settings:id/summary' and @text='Connected without internet']/parent::*/android.widget.TextView[@text='"
+ WifiName + "']")))
print("Wifi Successfully Connected without internet")
#allure.attach(name= body=str("Wifi Successfully Connected without internet"))
check_if_no_internet_popup(driver)
except:
try:
report.step_start("Verify if Wifi is Connected")
WifiInternetErrMsg = WebDriverWait(driver, 60).until(EC.presence_of_element_located((
MobileBy.XPATH,
"//*[@resource-id='com.android.settings:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")))
ssid_with_internet = True
print("Wifi Successfully Connected")
#allure.attach(name=body=str("Wifi Successfully Connected"))
except:
try:
report.step_start("Unknown WIFI status found")
ssid_with_internet = False
print("Unknown WIFI status found")
except NoSuchElementException:
print("Wifi Connection Error: " + WifiName)
#allure.attach(name=body=str("Wifi Connection Error: " + WifiName))
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
except NoSuchElementException:
print("No Switch element found")
#allure.attach(name= body=str("No Switch element found"))
# ---------------------To Turn on WIFi Switch if already OFF-------------------------------
except NoSuchElementException:
print("Couldn't find wifi Button")
#allure.attach(name= body=str("Couldn't find wifi Button"))
# ------------------Open WIFI page----------------------------------
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Connections")
#allure.attach(name= body=str("Exception: Verify Xpath - Update/check Xpath for Click Connections"))
# -----------------To Open Connections page---------------------------
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
#To disconnect and forget network
def wifi_disconnect_and_forget(request, WifiName, WifiPass, setup_perfectoMobile, connData):
print("\n-------------------------------------")
print("WIFI Disconnect")
print("-------------------------------------")
#allure.attach(name= body=str("------------------- WIFI Disconnect ------------------"))
report = setup_perfectoMobile[1]
driver = setup_perfectoMobile[0]
report.step_start("Switching Driver Context")
print("Switching Context to Native")
contexts = driver.contexts
driver.switch_to.context(contexts[0])
# Open Settings Application
openApp(connData["appPackage-android"], setup_perfectoMobile)
deviceModelName = getDeviceModelName(setup_perfectoMobile)
print("Selected Device Model: " + deviceModelName)
if deviceModelName != ("Pixel 4"):
report.step_start("Set Wifi Network to " + WifiName)
# -----------------To Open Connections page-----------------------
try:
print("Verifying Connected Wifi Connection")
report.step_start("Click Connections")
connElement = driver.find_element_by_xpath("//*[@text='Connections']")
connElement.click()
# ---------------------Open WIFI page-------------------------------
try:
report.step_start("Clicking Wi-Fi")
print("Clicking WIFI")
wifiElement = driver.find_element_by_xpath("//*[@text='Wi-Fi']")
wifiElement.click()
# --------------------To Turn on WIFi Switch if already OFF--------------------------------
try:
driver.implicitly_wait(1)
get_switch_text_element = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/switch_text']")
get_switch_text = get_switch_text_element.text
print("get_switch_text: ",get_switch_text)
print("Find wifi switch")
try: #To Turn on Wi-Fi Switch
if get_switch_text == "Off":
# driver.implicitly_wait(3)
get_switch_element = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/switch_widget']")
driver.implicitly_wait(1)
get_switch_element.click()
driver.implicitly_wait(1)
i = 0
for i in range(5):
if get_switch_text == "On":
print("WIFI Switch is ON")
break
else:
try:
get_switch_text_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/switch_text']")
get_switch_text = get_switch_text_element.text
except:
pass
print("Sleeping for: ", i)
time.sleep(i)
pass
if get_switch_text == "Off":
print("Switch is Still OFF")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
else:
print("Switch is already On")
check_if_no_internet_popup(driver)
except:
print("Couldn't turn on WIFI switch")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
#---------------------This is to Forget current connected SSID-------------------------------
try: #To deal with already connected SSID
check_if_no_internet_popup(driver)
network_category = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/connected_network_category']")
try: #To forget exhisting ssid
print("To forget ssid")
check_if_no_internet_popup(driver)
additional_details_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/layout_details']")
additional_details_element.click()
try:
check_if_no_internet_popup(driver)
forget_ssid = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/forget_button']//*[@resource-id='com.android.settings:id/icon']")
forget_ssid.click()
print("Forget old ssid")
#allure.attach(name=body=str("Forget old ssid"))
except:
print("Couldn't forget ssid")
#allure.attach(name=body=str("Couldn't forget ssid"))
closeApp(connData["appPackage-android"], setup_perfectoMobile)
except:
#allure.attach(name=body=str("Couldn't get into additional details"))
print("Couldn't get into additional details")
except:
#allure.attach(name=body=str("No Connected SSIDS"))
print("No Connected SSIDS")
#----------------------This is to Forget current connected SSID--------------------------------
try:
print("clicking on wifi switch")
get_switch_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/switch_widget']")
driver.implicitly_wait(2)
get_switch_element.click()
except:
print("couldn't click on wifi switch")
except NoSuchElementException:
print("No Switch element found")
# ---------------------To Turn on WIFi Switch if already OFF-------------------------------
except NoSuchElementException:
print("Couldn't find wifi Button")
# ------------------Open WIFI page----------------------------------
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Connections")
# -----------------To Open Connections page---------------------------
closeApp(connData["appPackage-android"], setup_perfectoMobile)
# try:
# elements = driver.find_elements_by_xpath("//*[@resource-id='com.android.settings:id/title']")
# print("elements: ", elements)
# print(len(elements))
# for i in range(len(elements)):
# print("elements[i]", elements[i])
# print("elements[i].text", elements[i].text)
# except:
# print("No SSIDS available")
def get_all_available_ssids(driver):
active_ssid_list = []
try:
time.sleep(2)
driver.implicitly_wait(1)
elements = driver.find_elements_by_xpath("//*[@resource-id='com.android.settings:id/title']")
# print("elements: ", elements)
print(len(elements))
for i in range(len(elements)):
# print("elements[i]", elements[i])
# print("elements[i].text", elements[i].text)
active_ssid_list.append(elements[i].text)
except:
print("No SSIDS available")
#allure.attach(name= body=str("SSIDs visible in device: " + available_ssid))
return active_ssid_list
def reportClient(value):
global reporting_client # declare a to be a global
reporting_client = value # this sets the global value of a
# This is a functon to get all of the ssid details
# This function needs to be called from a standalone script and not throuh testcase
# def get_all_available_ssids():
# from appium import webdriver
# driver = None
# reporting_client = None
#
# warnings.simplefilter("ignore", ResourceWarning)
# urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
#
# capabilities = {
# 'platformName': 'Android',
# 'model': 'Galaxy S9',
# 'browserName': 'mobileOS',
# # 'automationName' : 'Appium',
# 'securityToken': 'eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI3NzkzZGM0Ni1jZmU4LTQ4ODMtYjhiOS02ZWFlZGU2OTc2MDkifQ.eyJpYXQiOjE2MjE4NjgyOTksImp0aSI6IjIzNGFiOTM1LWIxYjQtNGZiOC1hZmJiLTM0OTQwNzU5MjIwMyIsImlzcyI6Imh0dHBzOi8vYXV0aDIucGVyZmVjdG9tb2JpbGUuY29tL2F1dGgvcmVhbG1zL3RpcC1wZXJmZWN0b21vYmlsZS1jb20iLCJhdWQiOiJodHRwczovL2F1dGgyLnBlcmZlY3RvbW9iaWxlLmNvbS9hdXRoL3JlYWxtcy90aXAtcGVyZmVjdG9tb2JpbGUtY29tIiwic3ViIjoiN2I1MzBhZTAtODgxOC00N2I5LTgzZjMtN2ZhMGZiMGRkYjRlIiwidHlwIjoiT2ZmbGluZSIsImF6cCI6Im9mZmxpbmUtdG9rZW4tZ2VuZXJhdG9yIiwibm9uY2UiOiI1MzI2NDQxNS0xYTQwLTQ1ZTctOGVkMi1hOTNiYWZmZWNjYjIiLCJzZXNzaW9uX3N0YXRlIjoiY2YzY2JlOGMtY2Y5OC00NzRlLWJmODctYTIxNzU0NzVhM2EzIiwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBvZmZsaW5lX2FjY2VzcyBlbWFpbCJ9.4a4v6AKxmY95Zb-l84K_Od49WPikwOHP7ryctfmnn-w',
# 'useAppiumForWeb': 'false',
# 'useAppiumForHybrid': 'false',
# # 'bundleId' : request.config.getini("appPackage-android"),
# }
#
# app_data = {
# "webURL": "https://www.google.com",
# "lblSearch": "//*[@class='gLFyf']",
# "elelSearch": "(//*[@class='sbic sb43'])[1]",
# "BtnRunSpeedTest": "//*[text()='RUN SPEED TEST']",
# "bundleId-iOS-Settings": 'com.apple.Preferences',
# "bundleId-iOS-Safari": 'com.apple.mobilesafari',
# "downloadMbps": "//*[@id='knowledge-verticals-internetspeedtest__download']/P[@class='spiqle']",
# "UploadMbps": "//*[@id='knowledge-verticals-internetspeedtest__upload']/P[@class='spiqle']",
# # Android
# "platformName-android": 'Android',
# "appPackage-android": 'com.android.settings'
# }
#
# driver = webdriver.Remote(
# "https://tip.perfectomobile.com/nexperience/perfectomobile/wd/hub",
# capabilities
# )
#
# try:
# print(driver)
# driver.implicitly_wait(35)
# #Driver Ends here
#
# projectname = "TIP-PyTest-Execution"
# projectversion = 1.0
# jobname = "tip-sushant-android"
# jobnumber = 2
# tags = "TestTag"
# testCaseName = "getting_ssids"
#
# # print("\nSetting Perfecto ReportClient....")
# perfecto_execution_context = PerfectoExecutionContext(driver, tags, Job(jobname, jobnumber),
# Project(projectname, projectversion))
# reporting_client = PerfectoReportiumClient(perfecto_execution_context)
# reporting_client.test_start(testCaseName, TestContext([], "Perforce"))
# reportClient(reporting_client)
#
#
# setup_perfectoMobile = (driver, reporting_client)
# print("setup_perfectoMobile_android: ", setup_perfectoMobile)
# print(type(setup_perfectoMobile))
#
# print("\n-------------------------------------")
# print("Select Wifi/AccessPoint Connection")
# print("-------------------------------------")
# print("Verifying Wifi Connection Details....")
# report = setup_perfectoMobile[1]
# driver = setup_perfectoMobile[0]
#
#
#
# ip_address_element_text = False
# ssid_with_internet = False
# ssid_list = []
#
# report.step_start("Switching Driver Context")
# print("Switching Context to Native")
# contexts = driver.contexts
# print("contexts", contexts)
# driver.switch_to.context(contexts[0])
# print("1508")
#
# # Open Settings Application
# openApp(app_data["appPackage-android"], setup_perfectoMobile)
#
# deviceModelName = driver.execute_script('mobile:handset:info', {'property': 'model'})
#
# # deviceModelName = getDeviceModelName(setup_perfectoMobile)
# print("Selected Device Model: " + deviceModelName)
#
# if deviceModelName != ("Pixel 4"):
# # -----------------To Open Connections page-----------------------
# try:
# print("Verifying Connected Wifi Connection")
# report.step_start("Click Connections")
# connElement = driver.find_element_by_xpath("//*[@text='Connections']")
# connElement.click()
#
# # ---------------------Open WIFI page-------------------------------
# try:
# report.step_start("Clicking Wi-Fi")
# print("Clicking WIFI")
# wifiElement = driver.find_element_by_xpath("//*[@text='Wi-Fi']")
# wifiElement.click()
#
# # --------------------To Turn on WIFi Switch if already OFF--------------------------------
# try:
# driver.implicitly_wait(1)
# get_switch_text_element = driver.find_element_by_xpath(
# "//*[@resource-id='com.android.settings:id/switch_text']")
# get_switch_text = get_switch_text_element.text
# print("get_switch_text: ", get_switch_text)
# # print("Find wifi switch")
# try: # To Turn on Wi-Fi Switch
# if get_switch_text == "Off":
# # driver.implicitly_wait(3)
# get_switch_element = driver.find_element_by_xpath(
# "//*[@resource-id='com.android.settings:id/switch_widget']")
# # driver.implicitly_wait(1)
# get_switch_element.click()
# driver.implicitly_wait(1)
# i = 0
# for i in range(5):
# if get_switch_text == "On":
# print("WIFI Switch is ON")
# break
# else:
# try:
# get_switch_text_element = driver.find_element_by_xpath(
# "//*[@resource-id='com.android.settings:id/switch_text']")
# get_switch_text = get_switch_text_element.text
# except:
# pass
# print("Sleeping for: ", i)
# time.sleep(i)
# pass
# if get_switch_text == "Off":
# print("Switch is Still OFF")
# closeApp(app_data["appPackage-android"], setup_perfectoMobile)
# close_driver(driver)
# return ip_address_element_text
# else:
# print("Switch is already On")
# check_if_no_internet_popup(driver)
# except:
# print("Couldn't turn on WIFI sewitch")
# closeApp(app_data["appPackage-android"], setup_perfectoMobile)
# close_driver(driver)
# return ip_address_element_text
#
# # ---------------------This is to Forget current connected SSID-------------------------------
# try: # To deal with already connected SSID
# check_if_no_internet_popup(driver)
# network_category = driver.find_element_by_xpath(
# "//*[@resource-id='com.android.settings:id/connected_network_category']")
# try: # To forget exhisting ssid
# print("To forget exhisting ssid")
# check_if_no_internet_popup(driver)
# additional_details_element = driver.find_element_by_xpath(
# "//*[@resource-id='com.android.settings:id/layout_details']")
# additional_details_element.click()
# try:
# check_if_no_internet_popup(driver)
# forget_ssid = driver.find_element_by_xpath(
# "//*[@resource-id='com.android.settings:id/forget_button']//*[@resource-id='com.android.settings:id/icon']")
# forget_ssid.click()
# print("Forget old ssid")
# except:
# print("Couldn't forget ssid")
# closeApp(app_data["appPackage-android"], setup_perfectoMobile)
# close_driver(driver)
# return ip_address_element_text
# except:
# print("Couldn't get into additional details")
# except:
# print("No Connected SSIDS")
# # ----------------------This is to Forget current connected SSID--------------------------------
# scroll_if_not_end_of_page = True
#
# try:
# for i in range(10):
# try:
# driver.implicitly_wait(5)
# window_size = driver.get_window_size()
# # print(window_size)
# # print(type(window_size))
# window_width = window_size['width']
# # print(window_width)
# window_height = window_size['height']
# # print(window_height)
# try:
# try:
# elements = driver.find_elements_by_xpath(
# "//*[@resource-id='com.android.settings:id/title']")
# print("elements: ", elements)
# print(len(elements))
# curent_ssid_list = []
# for j in range(len(elements)):
# # print("elements[i].text", elements[j].text)
# # print(j)
# if i != 0:
# curent_ssid_list.append(elements[j].text)
# # print("curent_ssid_list: ", curent_ssid_list)
# ssid_list.append(elements[j].text)
# print("ssid_list",ssid_list)
# print("curent_ssid_list: ", curent_ssid_list)
# except:
# print("No SSIDS available")
#
# try:
# print("in check")
# check = all(item in curent_ssid_list for item in ssid_list)
# print("check: ", check)
# if check:
# scroll_if_not_end_of_page = False
# break
# else:
# new_window_height = window_height + 100
# # driver.scroll(0, new_window_height)
# driver.execute_script("mobile: scroll", {"direction": "down"})
# continue
# except:
# print("Error in page end")
# except:
# pass
# except:
# pass
# except:
# pass
# except NoSuchElementException:
# print("No Switch element found")
# # ---------------------To Turn on WIFi Switch if already OFF-------------------------------
#
# except NoSuchElementException:
# print("Couldn't find wifi Button")
# # ------------------Open WIFI page----------------------------------
#
# except NoSuchElementException:
# print("Exception: Verify Xpath - Update/check Xpath for Click Connections")
# # -----------------To Open Connections page---------------------------
#
# except:
# try:
# closeApp(app_data["appPackage-android"], setup_perfectoMobile)
# except:
# pass
# try:
# reporting_client.test_stop(TestResultFactory.create_success())
# print('Report-Url: ' + reporting_client.report_url() + '\n')
# except:
# pass
# try:
# close_driver(driver)
# except:
# pass
# finally:
# try:
# reporting_client.test_stop(TestResultFactory.create_success())
# print('Report-Url: ' + reporting_client.report_url() + '\n')
# except:
# pass
# try:
# close_driver(driver)
# except:
# pass
# return ssid_list
#------------Enterprise Mode code----------------------------
def get_ip_address_eap_and(request, WifiName, User, ttls_passwd, setup_perfectoMobile, connData):
print("\n-------------------------------------")
print("Select Wifi/AccessPoint Connection")
print("-------------------------------------")
print("Verifying Wifi Connection Details....")
report = setup_perfectoMobile[1]
driver = setup_perfectoMobile[0]
ip_address_element_text = False
ssid_with_internet = False
report.step_start("Switching Driver Context")
print("Switching Context to Native")
contexts = driver.contexts
driver.switch_to.context(contexts[0])
# Open Settings Application
openApp(connData["appPackage-android"], setup_perfectoMobile)
deviceModelName = getDeviceModelName(setup_perfectoMobile)
print("Selected Device Model: " + deviceModelName)
if deviceModelName != ("Pixel 4"):
report.step_start("Set Wifi Network to " + WifiName)
# -----------------To Open Connections page-----------------------
try:
print("Verifying Connected Wifi Connection")
report.step_start("Click Connections")
connElement = driver.find_element_by_xpath("//*[@text='Connections']")
connElement.click()
# ---------------------Open WIFI page-------------------------------
try:
report.step_start("Clicking Wi-Fi")
print("Clicking WIFI")
time.sleep(3)
wifiElement = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((MobileBy.XPATH,"//*[@text='Wi-Fi']")))
wifiElement.click()
# --------------------To Turn on WIFi Switch if already OFF--------------------------------
try:
driver.implicitly_wait(1)
get_switch_text_element = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/switch_text']")
get_switch_text = get_switch_text_element.text
print("get_switch_text: ",get_switch_text)
print("Find wifi switch")
try: #To Turn on Wi-Fi Switch
if get_switch_text == "Off":
# driver.implicitly_wait(3)
get_switch_element = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/switch_widget']")
driver.implicitly_wait(1)
get_switch_element.click()
driver.implicitly_wait(1)
i = 0
for i in range(5):
if get_switch_text == "On":
print("WIFI Switch is ON")
break
else:
try:
get_switch_text_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/switch_text']")
get_switch_text = get_switch_text_element.text
except:
pass
print("Sleeping for: ", i)
time.sleep(i)
pass
if get_switch_text == "Off":
print("Switch is Still OFF")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ip_address_element_text, ssid_with_internet
else:
print("Switch is already On")
check_if_no_internet_popup(driver)
except:
print("Couldn't turn on WIFI switch")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ip_address_element_text, ssid_with_internet
#---------------------This is to Forget current connected SSID-------------------------------
try: #To deal with already connected SSID
check_if_no_internet_popup(driver)
network_category = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/connected_network_category']")
try: #To forget exhisting ssid
print("To forget ssid")
check_if_no_internet_popup(driver)
additional_details_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/layout_details']")
additional_details_element.click()
try:
check_if_no_internet_popup(driver)
forget_ssid = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/forget_button']//*[@resource-id='com.android.settings:id/icon']")
forget_ssid.click()
print("Forget old ssid")
except:
print("Couldn't forget ssid")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ip_address_element_text, ssid_with_internet
except:
print("Couldn't get into additional details")
except:
print("No Connected SSIDS")
#----------------------This is to Forget current connected SSID--------------------------------
time.sleep(2)
print("Selecting Wifi: " + WifiName)
#allure.attach(name= body=str("Selecting Wifi: " + WifiName))
ssid_found = False
available_ssids = False
#This is To get all available ssids
#------------------------------------------------------
try:
for k in range(10):
available_ssids = get_all_available_ssids(driver)
print("active_ssid_list: ", available_ssids)
allure.attach(name="Available SSIDs in device: ", body=str(available_ssids))
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:
print("couldn't find wifi in available ssid")
if not ssid_found:
print("could not found " + WifiName + " in device")
#allure.attach(name= body=str("could not found" + WifiName + " in device"))
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ip_address_element_text, ssid_with_internet
except:
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ip_address_element_text, ssid_with_internet
#-------------------------------------------------------
# Selecting WIFI
# -------------------------------------------------------
try:
report.step_start("Selecting Wifi: " + WifiName)
print("Selecting Wifi")
wifiSelectionElement = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='" + WifiName + "']")))
wifiSelectionElement.click()
check_if_no_internet_popup(driver)
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))
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ip_address_element_text, ssid_with_internet
# -------------------------------------------------------
# Set username
# -------------------------------------------------------
try:
driver.implicitly_wait(3)
report.step_start("Set User name")
print("Set User name")
wifiUserElement = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/edittext' and @password='false']")
wifiUserElement.send_keys(User)
except NoSuchElementException:
print("User name not Loaded")
# -------------------------------------------------------
# Set Password
# -------------------------------------------------------
try:
driver.implicitly_wait(6)
report.step_start("Set Password")
print("Set Password")
wifiPasswordElement = driver.find_element_by_xpath(
"//*[@text='Enter password']")
wifiPasswordElement.send_keys(ttls_passwd)
print("Entered Password")
except NoSuchElementException:
print("Password Page Not Loaded, password May be cached in the System")
# -------------------------------------------------------
# Selecting certificate
# -------------------------------------------------------
try:
driver.implicitly_wait(3)
report.step_start("Selecting CA Cert")
certElement = driver.find_element_by_xpath(
"//*[@text='Select certificate']")
certElement.click()
except NoSuchElementException:
print("Selecting certificate failed")
# -------------------------------------------------------
# Validating certificate
# -------------------------------------------------------
try:
driver.implicitly_wait(3)
report.step_start("Validting CA Cert")
certElement = driver.find_element_by_xpath(
"//*[@text=\"Don't validate\"]")
certElement.click()
except NoSuchElementException:
print("validation failed")
# -------------------------------------------------------
# Click on connect button
# -------------------------------------------------------
try:
driver.implicitly_wait(3)
report.step_start("Click Connect Button")
joinBTNElement = driver.find_element_by_xpath("//*[@text='Connect']")
joinBTNElement.click()
except NoSuchElementException:
print("Connect Button Not Enabled...Verify if Password is set properly ")
check_if_no_internet_popup(driver)
# -------------------------------------------------------
#Verify if WiFi is connected
# -------------------------------------------------------
try:
report.step_start("Verify if Wifi is Connected")
WifiInternetErrMsg = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH,
"//*[@resource-id='android:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")))
ssid_with_internet = True
print("Wifi Successfully Connected")
# time.sleep(5)
check_if_no_internet_popup(driver)
except:
try:
check_if_no_internet_popup(driver)
WifiInternetErrMsg = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH,
"//*[@resource-id='com.android.settings:id/summary' and @text='Connected without internet']/parent::*/android.widget.TextView[@text='"
+ WifiName + "']")))
print("Wifi Successfully Connected without internet")
check_if_no_internet_popup(driver)
except:
try:
report.step_start("Verify if Wifi is Connected")
WifiInternetErrMsg = WebDriverWait(driver, 60).until(EC.presence_of_element_located((
MobileBy.XPATH,
"//*[@resource-id='com.android.settings:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")))
ssid_with_internet = True
print("Wifi Successfully Connected")
except NoSuchElementException:
print("Wifi Connection Error: " + WifiName)
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ip_address_element_text, ssid_with_internet
# -------------------------------------------------------
#Get into Additional Details
#To Get an IP Address
#To Forget connection
#To turn off auto. connect
# -------------------------------------------------------
try:
print("Into additional details")
time.sleep(2)
additional_details_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/layout_details']")
additional_details_element.click()
try:
time.sleep(2)
ip_address_element = driver.find_element_by_xpath(
"//*[@text='IP address']/parent::*/android.widget.TextView[@resource-id='com.android.settings:id/summary']")
ip_address_element_text = ip_address_element.text
print("Device IP address is :", ip_address_element_text)
except:
try:
time.sleep(2)
ip_address_element = driver.find_element_by_xpath(
"//*[@text='IP address']/parent::*/android.widget.TextView[@resource-id='android:id/summary']")
ip_address_element_text = ip_address_element.text
print("Device IP address is :", ip_address_element_text)
except:
print("IP address element not found")
#allure.attach(name= body=str("IP address element not found"))
# closeApp(connData["appPackage-android"], setup_perfectoMobile)
# return ip_address_element_text, ssid_with_internet
try:
check_if_no_internet_popup(driver)
driver.implicitly_wait(3)
time.sleep(2)
auto_reconnect_off = driver.find("//*[@resource-id='android:id/switch_widget']")
auto_reconnect_off_text = auto_reconnect_off.text
if auto_reconnect_off_text != "Off":
auto_reconnect_off.click()
print("Auto reconnect turning off")
else:
print("Auto reconnect is already off")
except:
print("Couldn't find auto reconnect element")
# ------------------------------- Forget SSID ----------------
try:
check_if_no_internet_popup(driver)
forget_ssid = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/forget_button']//*[@resource-id='com.android.settings:id/icon']")
forget_ssid.click()
print("Forgetting ssid")
#------------------------------- Wifi Switch ----------------
try:
print("clicking on wifi switch")
get_switch_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/switch_widget']")
driver.implicitly_wait(2)
get_switch_element.click()
except:
print("couldn't click on wifi switch")
#allure.attach(name= body=str("couldn't click on wifi switch"))
except:
print("Couldn't forget ssid")
# closeApp(connData["appPackage-android"], setup_perfectoMobile)
# return ip_address_element_text, ssid_with_internet
except:
print("Couldn't get into Additional settings")
# -------------------------------------------------------
except:
print("No Switch element found")
# ---------------------To Turn on WIFi Switch if already OFF-------------------------------
except:
print("Couldn't find wifi Button")
# ------------------Open WIFI page----------------------------------
except:
print("Exception: Verify Xpath - Update/check Xpath for Click Connections")
# -----------------To Open Connections page---------------------------
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ip_address_element_text, ssid_with_internet
#only to connect to wifi
def wifi_connect_eap(request, WifiName, User, ttls_passwd, setup_perfectoMobile, connData):
print("\n-------------------------------------")
print("Select Wifi/AccessPoint Connection")
print("-------------------------------------")
print("Verifying Wifi Connection Details....")
#allure.attach(name= body=str("\n-------------------------------------"))
report = setup_perfectoMobile[1]
driver = setup_perfectoMobile[0]
ssid_with_internet = False
report.step_start("Switching Driver Context")
print("Switching Context to Native")
contexts = driver.contexts
driver.switch_to.context(contexts[0])
# Open Settings Application
openApp(connData["appPackage-android"], setup_perfectoMobile)
deviceModelName = getDeviceModelName(setup_perfectoMobile)
print("Selected Device Model: " + deviceModelName)
#allure.attach(name= body=str("\Selected Device Model: " + deviceModelName))
if deviceModelName != ("Pixel 4"):
report.step_start("Set Wifi Network to " + WifiName)
# -----------------To Open Connections page-----------------------
try:
print("Verifying Connected Wifi Connection")
report.step_start("Click Connections")
connElement = driver.find_element_by_xpath("//*[@text='Connections']")
connElement.click()
# ---------------------Open WIFI page-------------------------------
try:
report.step_start("Clicking Wi-Fi")
print("Clicking WIFI")
wifiElement = driver.find_element_by_xpath("//*[@text='Wi-Fi']")
wifiElement.click()
# --------------------To Turn on WIFi Switch if already OFF--------------------------------
try:
driver.implicitly_wait(1)
get_switch_text_element = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/switch_text']")
get_switch_text = get_switch_text_element.text
print("get_switch_text: ",get_switch_text)
print("Find wifi switch")
try: #To Turn on Wi-Fi Switch
if get_switch_text == "Off":
# driver.implicitly_wait(3)
get_switch_element = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/switch_widget']")
driver.implicitly_wait(1)
get_switch_element.click()
driver.implicitly_wait(1)
i = 0
for i in range(5):
if get_switch_text == "On":
print("WIFI Switch is ON")
break
else:
try:
get_switch_text_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/switch_text']")
get_switch_text = get_switch_text_element.text
except:
pass
print("Sleeping for: ", i)
time.sleep(i)
pass
if get_switch_text == "Off":
print("Switch is Still OFF")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
else:
print("Switch is already On")
check_if_no_internet_popup(driver)
except:
print("Couldn't turn on WIFI switch")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
#---------------------This is to Forget current connected SSID-------------------------------
try: #To deal with already connected SSID
check_if_no_internet_popup(driver)
network_category = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/connected_network_category']")
try: #To forget exhisting ssid
print("To forget ssid")
check_if_no_internet_popup(driver)
additional_details_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/layout_details']")
additional_details_element.click()
try:
check_if_no_internet_popup(driver)
forget_ssid = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/forget_button']//*[@resource-id='com.android.settings:id/icon']")
forget_ssid.click()
print("Forget old ssid")
except:
print("Couldn't forget ssid")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
except:
print("Couldn't get into additional details")
except:
print("No Connected SSIDS")
#----------------------This is to Forget current connected 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
# This is To get all available ssids
# ------------------------------------------------------
try:
for check_for_all_ssids in range(2):
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:
print("1538")
pass
if not ssid_found:
print("could not found" + WifiName + " in device")
#allure.attach(name= body=str("could not found" + WifiName + " in device"))
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
except:
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
# -------------------------------------------------------
# Selecting WIFI
# -------------------------------------------------------
try:
report.step_start("Selecting Wifi: " + WifiName)
print("Selecting Wifi")
wifiSelectionElement = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='" + WifiName + "']")))
wifiSelectionElement.click()
check_if_no_internet_popup(driver)
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))
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
# -------------------------------------------------------
# Set username
# -------------------------------------------------------
try:
driver.implicitly_wait(3)
report.step_start("Set User name")
print("Set User name")
wifiUserElement = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/edittext' and @password='false']")
wifiUserElement.send_keys(User)
except NoSuchElementException:
print("User name not Loaded")
# -------------------------------------------------------
# Set Password
# -------------------------------------------------------
try:
driver.implicitly_wait(6)
report.step_start("Set Password")
print("Set Password")
wifiPasswordElement = driver.find_element_by_xpath(
"//*[@text='Enter password']")
wifiPasswordElement.send_keys(ttls_passwd)
print("Entered Password")
except NoSuchElementException:
print("Password Page Not Loaded, password May be cached in the System")
# -------------------------------------------------------
# Selecting certificate
# -------------------------------------------------------
try:
driver.implicitly_wait(3)
report.step_start("Selecting CA Cert")
certElement = driver.find_element_by_xpath(
"//*[@text='Select certificate']")
certElement.click()
except NoSuchElementException:
print("Selecting certificate failed")
# -------------------------------------------------------
# Validating certificate
# -------------------------------------------------------
try:
driver.implicitly_wait(3)
report.step_start("Validting CA Cert")
certElement = driver.find_element_by_xpath(
"//*[@text=\"Don't validate\"]")
certElement.click()
except NoSuchElementException:
print("validation failed")
# -------------------------------------------------------
# Click on connect button
# -------------------------------------------------------
try:
driver.implicitly_wait(3)
report.step_start("Click Connect Button")
joinBTNElement = driver.find_element_by_xpath("//*[@text='Connect']")
joinBTNElement.click()
except NoSuchElementException:
print("Connect Button Not Enabled...Verify if Password is set properly ")
check_if_no_internet_popup(driver)
# -------------------------------------------------------
#Verify if WiFi is connected
# -------------------------------------------------------
try:
report.step_start("Verify if Wifi is Connected")
WifiInternetErrMsg = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH,
"//*[@resource-id='android:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")))
ssid_with_internet = True
print("Wifi Successfully Connected")
#allure.attach(name= body=str("Wifi Successfully Connected"))
# time.sleep(5)
check_if_no_internet_popup(driver)
except:
try:
check_if_no_internet_popup(driver)
WifiInternetErrMsg = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH,
"//*[@resource-id='com.android.settings:id/summary' and @text='Connected without internet']/parent::*/android.widget.TextView[@text='"
+ WifiName + "']")))
print("Wifi Successfully Connected without internet")
#allure.attach(name= body=str("Wifi Successfully Connected without internet"))
check_if_no_internet_popup(driver)
except:
try:
report.step_start("Verify if Wifi is Connected")
WifiInternetErrMsg = WebDriverWait(driver, 60).until(EC.presence_of_element_located((
MobileBy.XPATH,
"//*[@resource-id='com.android.settings:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")))
ssid_with_internet = True
print("Wifi Successfully Connected")
#allure.attach(name=body=str("Wifi Successfully Connected"))
except NoSuchElementException:
print("Wifi Connection Error: " + WifiName)
#allure.attach(name=body=str("Wifi Connection Error: " + WifiName))
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
except NoSuchElementException:
print("No Switch element found")
#allure.attach(name= body=str("No Switch element found"))
# ---------------------To Turn on WIFi Switch if already OFF-------------------------------
except NoSuchElementException:
print("Couldn't find wifi Button")
#allure.attach(name= body=str("Couldn't find wifi Button"))
# ------------------Open WIFI page----------------------------------
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Connections")
#allure.attach(name= body=str("Exception: Verify Xpath - Update/check Xpath for Click Connections"))
# -----------------To Open Connections page---------------------------
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
#--------------------CAPTIVE PORTAL Android-----------------------------------------
def captive_portal_and(request, WifiName, WifiPass, setup_perfectoMobile, connData):
print("\n-------------------------------------")
print("Select Wifi/AccessPoint Connection")
print("-------------------------------------")
print("Verifying Wifi Connection Details....")
#allure.attach(name= body=str("\n-------------------------------------"))
report = setup_perfectoMobile[1]
driver = setup_perfectoMobile[0]
ssid_with_internet = False
report.step_start("Switching Driver Context")
print("Switching Context to Native")
contexts = driver.contexts
driver.switch_to.context(contexts[0])
# Open Settings Application
openApp(connData["appPackage-android"], setup_perfectoMobile)
deviceModelName = getDeviceModelName(setup_perfectoMobile)
print("Selected Device Model: " + deviceModelName)
#allure.attach(name= body=str("\Selected Device Model: " + deviceModelName))
if deviceModelName != ("Pixel 4"):
report.step_start("Set Wifi Network to " + WifiName)
# -----------------To Open Connections page-----------------------
try:
print("Verifying Connected Wifi Connection")
report.step_start("Click Connections")
connElement = driver.find_element_by_xpath("//*[@text='Connections']")
connElement.click()
# ---------------------Open WIFI page-------------------------------
try:
report.step_start("Clicking Wi-Fi")
print("Clicking WIFI")
wifiElement = driver.find_element_by_xpath("//*[@text='Wi-Fi']")
wifiElement.click()
# --------------------To Turn on WIFi Switch if already OFF--------------------------------
try:
driver.implicitly_wait(1)
get_switch_text_element = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/switch_text']")
get_switch_text = get_switch_text_element.text
print("get_switch_text: ",get_switch_text)
print("Find wifi switch")
try: #To Turn on Wi-Fi Switch
if get_switch_text == "Off":
# driver.implicitly_wait(3)
get_switch_element = driver.find_element_by_xpath("//*[@resource-id='com.android.settings:id/switch_widget']")
driver.implicitly_wait(1)
get_switch_element.click()
driver.implicitly_wait(1)
i = 0
for i in range(5):
if get_switch_text == "On":
print("WIFI Switch is ON")
break
else:
try:
get_switch_text_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/switch_text']")
get_switch_text = get_switch_text_element.text
except:
pass
print("Sleeping for: ", i)
time.sleep(i)
pass
if get_switch_text == "Off":
print("Switch is Still OFF")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
else:
print("Switch is already On")
check_if_no_internet_popup(driver)
except:
print("Couldn't turn on WIFI switch")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
#---------------------This is to Forget current connected SSID-------------------------------
try: #To deal with already connected SSID
check_if_no_internet_popup(driver)
network_category = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/connected_network_category']")
try: #To forget exhisting ssid
print("To forget ssid")
check_if_no_internet_popup(driver)
additional_details_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/layout_details']")
additional_details_element.click()
try:
check_if_no_internet_popup(driver)
forget_ssid = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/forget_button']//*[@resource-id='com.android.settings:id/icon']")
forget_ssid.click()
print("Forget old ssid")
except:
print("Couldn't forget ssid")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
except:
print("Couldn't get into additional details")
except:
print("No Connected SSIDS")
#----------------------This is to Forget current connected 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
# This is To get all available ssids
# ------------------------------------------------------
try:
for check_for_all_ssids in range(2):
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:
print("1538")
pass
if not ssid_found:
print("could not found" + WifiName + " in device")
#allure.attach(name= body=str("could not found" + WifiName + " in device"))
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
except:
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
# -------------------------------------------------------
#Selecting WIFI
# -------------------------------------------------------
try:
report.step_start("Selecting Wifi: " + WifiName)
print("Click wifi")
wifi_selection_element = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='" + WifiName + "']")))
wifi_selection_element.click()
check_if_no_internet_popup(driver)
#allure.attach(name= body=str("Selecting Wifi: " + WifiName))
except Exception as e:
print("Exception on Selecting Wifi Network. Please check wifi Name or signal")
#allure.attach(name= body=str("Exception on Selecting Wifi Network. Please check wifi Name or signal"))
request.config.cache.set(key="SelectingWifiFailed", value=str(e))
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
# -------------------------------------------------------
#Set password if Needed
# -------------------------------------------------------
try:
time.sleep(2)
check_if_no_internet_popup(driver)
report.step_start("Set Wifi Password")
print("Enter Wifi password")
wifi_password_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/edittext']")
wifi_password_element.send_keys(WifiPass)
except NoSuchElementException:
print("Password Page Not Loaded, password May be cached in the System")
check_if_no_internet_popup(driver)
# -------------------------------------------------------
#Click on connect button
# -------------------------------------------------------
try:
time.sleep(2)
report.step_start("Click Connect Button")
print("Click Connect Button")
join_btn_element = driver.find_element_by_xpath("//*[@text='Connect']")
join_btn_element.click()
except NoSuchElementException:
print("Connect Button Not Enabled...Verify if Password is set properly ")
check_if_no_internet_popup(driver)
#---------------------Clicking on ssid for captive portal login--------
try:
time.sleep(2)
report.step_start("Selecting Wifi: " + WifiName)
wifi_selection_element = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='" + WifiName + "']")))
wifi_selection_element.click()
except NoSuchElementException:
print("Not connected to Captive portal Ssid.. ")
try:
time.sleep(2)
report.step_start("Click Accept Terms Button")
print("Click Accept Terms Button")
join_btn_element = driver.find_element_by_xpath("//*[@text='Accept Terms of Service']")
join_btn_element.click()
except NoSuchElementException:
print(" Couldn't press Accept terms button")
try:
time.sleep(2)
report.step_start("Click Continue Button")
print("Click Continue Button")
join_btn_element = driver.find_element_by_xpath("//*[@text='Continue']")
join_btn_element.click()
except NoSuchElementException:
print(" Couldn't press Continue button")
try:
time.sleep(2)
report.step_start("Click Last Terms if needed")
print("Click Last Terms if needed")
join_btn_element = driver.find_element_by_xpath("//*[@text='Done']")
join_btn_element.click()
except NoSuchElementException:
print(" Couldn't find the last terms page")
#Verify if WiFi is connected
# -------------------------------------------------------
try:
report.step_start("Verify if Wifi is Connected")
WifiInternetErrMsg = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH,
"//*[@resource-id='android:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")))
ssid_with_internet = True
print("Wifi Successfully Connected")
#allure.attach(name= body=str("Wifi Successfully Connected"))
# time.sleep(5)
check_if_no_internet_popup(driver)
except:
try:
check_if_no_internet_popup(driver)
WifiInternetErrMsg = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH,
"//*[@resource-id='com.android.settings:id/summary' and @text='Connected without internet']/parent::*/android.widget.TextView[@text='"
+ WifiName + "']")))
print("Wifi Successfully Connected without internet")
#allure.attach(name= body=str("Wifi Successfully Connected without internet"))
check_if_no_internet_popup(driver)
except:
try:
report.step_start("Verify if Wifi is Connected")
WifiInternetErrMsg = WebDriverWait(driver, 60).until(EC.presence_of_element_located((
MobileBy.XPATH,
"//*[@resource-id='com.android.settings:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")))
ssid_with_internet = True
print("Wifi Successfully Connected")
#allure.attach(name=body=str("Wifi Successfully Connected"))
except NoSuchElementException:
print("Wifi Connection Error: " + WifiName)
#allure.attach(name=body=str("Wifi Connection Error: " + WifiName))
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
# -------------------------------------------------------
# Get into Additional Details
# To Get an IP Address
# To Forget connection
# To turn off auto. connect
# -------------------------------------------------------
try:
print("Into additional details")
time.sleep(2)
additional_details_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/layout_details']")
additional_details_element.click()
try:
time.sleep(2)
ip_address_element = driver.find_element_by_xpath(
"//*[@text='IP address']/parent::*/android.widget.TextView[@resource-id='com.android.settings:id/summary']")
ip_address_element_text = ip_address_element.text
print("Device IP address is :", ip_address_element_text)
except:
try:
time.sleep(2)
ip_address_element = driver.find_element_by_xpath(
"//*[@text='IP address']/parent::*/android.widget.TextView[@resource-id='android:id/summary']")
ip_address_element_text = ip_address_element.text
print("Device IP address is :", ip_address_element_text)
except:
print("IP address element not found")
# allure.attach(name= body=str("IP address element not found"))
# closeApp(connData["appPackage-android"], setup_perfectoMobile)
# return ip_address_element_text, ssid_with_internet
try:
check_if_no_internet_popup(driver)
driver.implicitly_wait(3)
time.sleep(2)
auto_reconnect_off = driver.find("//*[@resource-id='android:id/switch_widget']")
auto_reconnect_off_text = auto_reconnect_off.text
if auto_reconnect_off_text != "Off":
auto_reconnect_off.click()
print("Auto reconnect turning off")
else:
print("Auto reconnect is already off")
except:
print("Couldn't find auto reconnect element")
except:
print("Couldn't get into Additional settings")
except NoSuchElementException:
print("No Switch element found")
#allure.attach(name= body=str("No Switch element found"))
# ---------------------To Turn on WIFi Switch if already OFF-------------------------------
except NoSuchElementException:
print("Couldn't find wifi Button")
#allure.attach(name= body=str("Couldn't find wifi Button"))
# ------------------Open WIFI page----------------------------------
except NoSuchElementException:
print("Exception: Verify Xpath - Update/check Xpath for Click Connections")
#allure.attach(name= body=str("Exception: Verify Xpath - Update/check Xpath for Click Connections"))
# -----------------To Open Connections page---------------------------
# --------------------Pixel 4 code---------------------------
else:
report.step_start("Set Wifi Network to " + WifiName)
# -----------------To Open Connections page-----------------------
try:
print("Verifying Connected Wifi Connection")
report.step_start("Click Network & internet in pixel4")
connElement = driver.find_element_by_xpath("//*[@text='Network & internet']")
connElement.click()
# ---------------------Open WIFI page-------------------------------
try:
report.step_start("Clicking Wi-Fi")
print("Clicking WIFI")
time.sleep(3)
wifiElement = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='WiFi']")))
wifiElement.click()
# --------------------To Turn on WIFi Switch if already OFF--------------------------------
try:
driver.implicitly_wait(1)
report.step_start("Turn on WIFi Switch if already OFF")
get_switch_text_element = driver.find_element_by_xpath(
"//*[@resource-id='android:id/icon']")
get_switch_text = get_switch_text_element.click()
if get_switch_text is not None:
switch_text = "Off"
else:
switch_text = "On"
print("get_switch_text: ", switch_text)
print("Find wifi switch")
try: # To Turn on Wi-Fi Switch
if switch_text == "Off":
# driver.implicitly_wait(3)
get_switch_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/switch_widget']")
driver.implicitly_wait(1)
get_switch_element.click()
driver.implicitly_wait(1)
i = 0
for i in range(5):
if switch_text == "On":
print("WIFI Switch is ON")
break
else:
try:
get_switch_text_element = driver.find_element_by_xpath(
"//*[@text='Add network']")
get_switch_text = get_switch_text_element.text
if get_switch_text == "Add network":
switch_text = "On"
else:
switch_text = "Off"
except NoSuchElementException:
print("Exception: Verify Xpath")
# Scroll Down
scrollDown(setup_perfectoMobile)
print("Sleeping for: ", i)
time.sleep(i)
pass
if switch_text == "Off":
print("Switch is Still OFF")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
else:
print("Switch is already On")
check_if_no_internet_popup(driver)
except:
print("Couldn't turn on WIFI switch")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
# ---------------------This is to Forget current connected SSID-------------------------------
try: # To deal with already connected SSID
check_if_no_internet_popup(driver)
network_category = driver.find_element_by_xpath("//*[@text='Connected']")
try: # To forget existing ssid
print("To forget ssid")
report.step_start("To forget ssid")
check_if_no_internet_popup(driver)
additional_details_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/settings_button_no_background']")
additional_details_element.click()
except:
print("Couldn't get into additional details")
try:
check_if_no_internet_popup(driver)
forget_ssid = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/button1']")
forget_ssid.click()
print("Forget old ssid")
except:
print("Couldn't forget ssid")
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
except:
print("No Connected SSIDS")
# ----------------------This is to Forget current connected SSID--------------------------------
# time.sleep(2)
# print("Selecting Wifi: " + WifiName)
# ssid_found = False
# available_ssids = False
# This is To get all available ssids
# ------------------------------------------------------
# try:
# for check_for_all_ssids in range(2):
# available_ssids = WifiName
# 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:
# print("1538")
# pass
# if not ssid_found:
# print("could not found" + WifiName + " in device")
# # allure.attach(name= body=str("could not found" + WifiName + " in device"))
# closeApp(connData["appPackage-android"], setup_perfectoMobile)
# return ssid_with_internet
# except:
# closeApp(connData["appPackage-android"], setup_perfectoMobile)
# return ssid_with_internet
# # -------------------------------------------------------
# Selecting WIFI
# -------------------------------------------------------
try:
report.step_start("Selecting Wifi: " + WifiName)
print("Click wifi")
wifi_selection_element = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='" + WifiName + "']")))
wifi_selection_element.click()
check_if_no_internet_popup(driver)
# allure.attach(name= body=str("Selecting Wifi: " + WifiName))
except Exception as e:
print("Exception on Selecting Wifi Network")
# allure.attach(name= body=str("Exception on Selecting Wifi Network. Please check wifi Name or signal"))
request.config.cache.set(key="SelectingWifiFailed", value=str(e))
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
# -------------------------------------------------------
# Set password if Needed
# -------------------------------------------------------
try:
check_if_no_internet_popup(driver)
report.step_start("Set Wifi Password")
print("Entering password")
wifiPasswordElement = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/password']")
wifiPasswordElement.send_keys(WifiPass)
except NoSuchElementException:
print("Password Page Not Loaded, password May be cached in the System")
check_if_no_internet_popup(driver)
# -------------------------------------------------------
# Click on connect button
# -------------------------------------------------------
try:
report.step_start("Click Connect Button")
joinBTNElement = driver.find_element_by_xpath("//*[@text='Connect']")
joinBTNElement.click()
except NoSuchElementException:
print("Connect Button Not Enabled...Verify if Password is set properly ")
check_if_no_internet_popup(driver)
# -------------------------------------------------------
try:
report.step_start("Selecting Wifi: " + WifiName)
wifiSelectionElement = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='" + WifiName + "']")))
wifiSelectionElement.click()
check_if_no_internet_popup(driver)
except Exception as e:
print("Exception on Selecting Wifi Network. Please check wifi Name or signal")
try:
time.sleep(2)
report.step_start("Click Accept Terms Button")
print("Click Accept Terms Button")
join_btn_element = driver.find_element_by_xpath("//*[@text='Accept Terms of Service']")
join_btn_element.click()
except NoSuchElementException:
print(" Couldn't press Accept terms button")
try:
time.sleep(2)
report.step_start("Click Continue Button")
print("Click Continue Button")
join_btn_element = driver.find_element_by_xpath("//*[@text='Continue']")
join_btn_element.click()
except NoSuchElementException:
print(" Couldn't press Continue button")
try:
time.sleep(2)
report.step_start("Click Last Terms if needed")
print("Click Last Terms if needed")
join_btn_element = driver.find_element_by_xpath("//*[@text='Done']")
join_btn_element.click()
except NoSuchElementException:
print(" Couldn't find the last terms page")
# Verify if WiFi is connected
# -------------------------------------------------------
try:
report.step_start("Verify if Wifi is Connected")
WifiInternetErrMsg = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH,
"//*[@resource-id='android:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")))
ssid_with_internet = True
print("Wifi Successfully Connected")
# time.sleep(5)
check_if_no_internet_popup(driver)
except:
try:
check_if_no_internet_popup(driver)
WifiInternetErrMsg = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH,
"//*[@resource-id='com.android.settings:id/summary' and @text='Connected without internet']/parent::*/android.widget.TextView[@text='" + WifiName + "']")))
print("Wifi Successfully Connected without internet")
check_if_no_internet_popup(driver)
except:
try:
report.step_start("Verify if Wifi is Connected")
WifiInternetErrMsg = WebDriverWait(driver, 60).until(
EC.presence_of_element_located((
MobileBy.XPATH,
"//*[@resource-id='com.android.settings:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + WifiName + "']")))
ssid_with_internet = True
print("Wifi Successfully Connected")
except NoSuchElementException:
print("Wifi Connection Error: " + WifiName)
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ssid_with_internet
# -------------------------------------------------------
# Get into Additional Details
# To Get an IP Address
# To Forget connection
# To turn off auto. connect
# -------------------------------------------------------
try:
print("Into additional details")
time.sleep(5)
report.step_start("Going for ip address")
additional_details_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/settings_button_no_background']")
additional_details_element.click()
print("Entered ssid")
try:
time.sleep(10)
print("clicking Advanced")
report.step_start("clicking Advanced")
advanced_element = driver.find_element_by_xpath("//*[@text='Advanced']")
advanced_element.click()
print("clicked Advanced")
# print("Device IP address is :", ip_address_element_text)
except:
try:
time.sleep(5)
print("clicking Advanced2")
advanced_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/recycler_view']/android.widget.FrameLayout[2]/android.widget.LinearLayout[1]/android.widget.RelativeLayout[1]")
advanced_element.click()
# print("Device IP address is :", ip_address_element_text)
except:
try:
time.sleep(5)
print("clicking Advanced2")
advanced_element = driver.find_element_by_xpath(
"//*[@resource-id='com.android.settings:id/recycler_view']/android.widget.LinearLayout[5]/android.widget.LinearLayout[1]/android.widget.ImageView[1]")
advanced_element.click()
except:
print("No advanced options")
# allure.attach(name= body=str("IP address element not found"))
# closeApp(connData["appPackage-android"], setup_perfectoMobile)
# return ip_address_element_text, ssid_with_internet
# Scroll Down
scrollDown(setup_perfectoMobile)
try:
time.sleep(2)
ip_address_element = driver.find_element_by_xpath(
"//*[@text='IP address']/parent::*/android.widget.TextView[@resource-id='android:id/summary']")
ip_address_element_text = ip_address_element.text
print("Device IP address is :", ip_address_element_text)
except:
print("IP address element not found")
except:
print("Couldn't get into Additional settings")
# -------------------------------------------------------
except:
print("No Switch element found")
# ---------------------To Turn on WIFi Switch if already OFF-------------------------------
except:
print("Couldn't find wifi Button")
# ------------------Open WIFI page----------------------------------
except:
print("Exception: Verify Xpath - Update/check Xpath for Click Connections")
# -----------------To Open Connections page---------------------------
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return ip_address_element_text, ssid_with_internet
def close_driver(driver):
driver.close()
driver.quit()
def expressWifi(request, WifiName, setup_perfectoMobile, connData):
print("\n-------------------------------------")
print("Express Wifi Verification")
print("-------------------------------------")
report = setup_perfectoMobile[1]
driver = setup_perfectoMobile[0]
try:
click_on_ssid = WebDriverWait(driver, 10).until(EC.presence_of_element_located((
MobileBy.XPATH,
"//*[@resource-id='com.android.settings:id/summary' and @text='Sign in to the network.']/parent::*/android.widget.TextView[@text='" + WifiName + "']")))
click_on_ssid.click()
print("click on expresswifi SSID to open login page")
except:
print("Could not found expresswifi SSID")
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("//*[@resource-id='dogfood-menu']")
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("//*[@resource-id='run_tests']")
ExpressWifiRunTests.click()
time.sleep(20)
except NoSuchElementException:
print("Exception ExceptionExpressWifi Click Run Tests!")
try:
print("Verify Results: ")
report.step_start("Verify Results")
expressWifiOutputMsg = "//*[@resource-id='test_result']"
LogOut = driver.find_element_by_xpath(expressWifiOutputMsg)
print("----" + LogOut.text + "\n")
if 'test completed successfully' in LogOut.text:
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return True
else:
closeApp(connData["appPackage-android"], setup_perfectoMobile)
return False
except NoSuchElementException:
print("Exception Verify Results")
closeApp(connData["appPackage-android"], setup_perfectoMobile)