mirror of
https://github.com/Telecominfraproject/wlan-testing.git
synced 2025-10-30 18:38:06 +00:00
3001 lines
170 KiB
Python
3001 lines
170 KiB
Python
"""
|
||
This file contains the functions that are required for Perfecto Android devices
|
||
"""
|
||
import logging
|
||
import os
|
||
import re
|
||
import time
|
||
import warnings
|
||
from time import gmtime, strftime
|
||
import allure
|
||
import pytest
|
||
import requests
|
||
import urllib3
|
||
from appium import webdriver
|
||
from appium.webdriver import webdriver
|
||
from appium.webdriver.common.mobileby import MobileBy
|
||
from perfecto import (PerfectoExecutionContext, PerfectoReportiumClient, TestContext)
|
||
from perfecto.model.model import Job, Project
|
||
from selenium.common.exceptions import NoSuchElementException
|
||
from selenium.webdriver.support import expected_conditions as EC
|
||
from selenium.webdriver.support.ui import WebDriverWait
|
||
from xml.etree import ElementTree as ET
|
||
|
||
|
||
class android_libs:
|
||
global driver, perfecto_execution_context, deviceModel
|
||
android_devices = {
|
||
"Galaxy S20": {
|
||
"platformName-android": "Android",
|
||
"model-android": "Galaxy S20",
|
||
"appPackage-android": "com.android.settings",
|
||
"bundleId-iOS-Settings": "com.apple.Preferences",
|
||
"bundleId-iOS-Safari": "com.apple.mobilesafari",
|
||
"jobName": "Interop-Galaxy-S20",
|
||
"jobNumber": 38
|
||
},
|
||
"Galaxy S10.*": {
|
||
"platformName-android": "Android",
|
||
"model-android": "Galaxy S10.*",
|
||
"appPackage-android": "com.android.settings",
|
||
"bundleId-iOS-Settings": "com.apple.Preferences",
|
||
"bundleId-iOS-Safari": "com.apple.mobilesafari",
|
||
"jobName": "Interop-Galaxy-S10",
|
||
"jobNumber": 38
|
||
},
|
||
"Galaxy S9": {
|
||
"platformName-android": "Android",
|
||
"model-android": "Galaxy S9",
|
||
"appPackage-android": "com.android.settings",
|
||
"bundleId-iOS-Settings": "com.apple.Preferences",
|
||
"bundleId-iOS-Safari": "com.apple.mobilesafari",
|
||
"jobName": "Interop-Galaxy-S9",
|
||
"jobNumber": 38
|
||
},
|
||
"Pixel 4": {
|
||
"platformName-android": "Android",
|
||
"model-android": "Pixel 4",
|
||
"appPackage-android": "com.android.settings",
|
||
"bundleId-iOS-Settings": "com.apple.Preferences",
|
||
"bundleId-iOS-Safari": "com.apple.mobilesafari",
|
||
"jobName": "Interop-pixel-4",
|
||
"jobNumber": 38
|
||
}
|
||
}
|
||
ios_devices = {
|
||
"iPhone-11": {
|
||
"model-iOS": "iPhone-11",
|
||
"bundleId-iOS": "com.apple.Preferences",
|
||
"platformName-iOS": "iOS",
|
||
"bundleId-iOS-Settings": "com.apple.Preferences",
|
||
"bundleId-iOS-Ping": "com.deftapps.ping",
|
||
"browserType-iOS": "Safari",
|
||
"bundleId-iOS-Safari": "com.apple.mobilesafari",
|
||
"platformName-android": "Android",
|
||
"appPackage-android": "com.android.settings",
|
||
"jobName": "Interop-iphone-11",
|
||
"jobNumber": 38
|
||
},
|
||
"iPhone-12": {
|
||
"model-iOS": "iPhone-12",
|
||
"bundleId-iOS": "com.apple.Preferences",
|
||
"platformName-iOS": "iOS",
|
||
"bundleId-iOS-Settings": "com.apple.Preferences",
|
||
"bundleId-iOS-Ping": "com.deftapps.ping",
|
||
"browserType-iOS": "Safari",
|
||
"bundleId-iOS-Safari": "com.apple.mobilesafari",
|
||
"platformName-android": "Android",
|
||
"appPackage-android": "com.android.settings",
|
||
"jobName": "Interop-iphone-12",
|
||
"jobNumber": 38
|
||
},
|
||
"iPhone-7": {
|
||
"model-iOS": "iPhone-7",
|
||
"bundleId-iOS": "com.apple.Preferences",
|
||
"platformName-iOS": "iOS",
|
||
"bundleId-iOS-Settings": "com.apple.Preferences",
|
||
"bundleId-iOS-Ping": "com.deftapps.ping",
|
||
"browserType-iOS": "Safari",
|
||
"bundleId-iOS-Safari": "com.apple.mobilesafari",
|
||
"platformName-android": "Android",
|
||
"appPackage-android": "com.android.settings",
|
||
"jobName": "Interop-iphone-7",
|
||
"jobNumber": 38
|
||
},
|
||
"iPhone-XR": {
|
||
"model-iOS": "iPhone-XR",
|
||
"bundleId-iOS": "com.apple.Preferences",
|
||
"platformName-iOS": "iOS",
|
||
"bundleId-iOS-Settings": "com.apple.Preferences",
|
||
"bundleId-iOS-Ping": "com.deftapps.ping",
|
||
"browserType-iOS": "Safari",
|
||
"bundleId-iOS-Safari": "com.apple.mobilesafari",
|
||
"platformName-android": "Android",
|
||
"appPackage-android": "com.android.settings",
|
||
"jobName": "Interop-iphone-XR",
|
||
"jobNumber": 38
|
||
}
|
||
}
|
||
def __init__(self, perfecto_data=None, dut_data=None, testcase=None):
|
||
logging_level = logging.INFO
|
||
logging.basicConfig(format='%(asctime)s - %(message)s', level=logging_level)
|
||
# super().__init__(perfecto_data=perfecto_data, dut_data=dut_data)
|
||
self.perfecto_data = perfecto_data
|
||
self.dut_data = dut_data
|
||
self.testcase_name = testcase
|
||
self.connData = self.get_ToggleAirplaneMode_data()
|
||
print("connData------", self.connData)
|
||
pass
|
||
|
||
# Checks if there is any Popup on device and tries to kill the Popup and returns false if the Popup is not killed
|
||
def check_if_no_internet_popup(self, driver):
|
||
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")
|
||
logging.warning("Couldn't 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
|
||
|
||
# Checks the Available SSIDS on device and return them in the form of List
|
||
def get_all_available_ssids(self, driver, deviceModelName):
|
||
active_ssid_list = []
|
||
print("Selected Device Model: " + deviceModelName)
|
||
if deviceModelName != ("Pixel 4"):
|
||
try:
|
||
time.sleep(8)
|
||
driver.implicitly_wait(10)
|
||
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")
|
||
else:
|
||
try:
|
||
time.sleep(8)
|
||
driver.implicitly_wait(10)
|
||
elements = driver.find_elements_by_xpath("//*[@resource-id='android: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)
|
||
try:
|
||
active_ssid_list.append(elements[i].text)
|
||
except:
|
||
print("Encountered a cache SSID which is no longer in the DOM.Moving to next SSID.")
|
||
logging.warning("Encountered a cache SSID which is no longer in the DOM.Moving to next SSID")
|
||
except:
|
||
print("No SSIDS available")
|
||
logging.error("No SSIDS available")
|
||
return active_ssid_list
|
||
|
||
# Opens an APP on the device based on the argument given
|
||
def openApp(self, 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)
|
||
|
||
# Closes an APP on the device based on the argument given
|
||
def closeApp(self, 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")
|
||
|
||
# Tries to swipe the screen on the device based on the Params given
|
||
def scrollDown(self, 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)
|
||
|
||
# Tries to swipe the screen on the device based on the Params given specially created for Pixel Phone
|
||
def scroll_down_pixel(self, setup_perfectoMobile):
|
||
print("Scroll Down")
|
||
setup_perfectoMobile[1].step_start("Scroll Down")
|
||
params2 = {}
|
||
params2["start"] = "50%,50%"
|
||
params2["end"] = "50%,20%"
|
||
params2["duration"] = "4"
|
||
time.sleep(2)
|
||
setup_perfectoMobile[0].execute_script('mobile:touch:swipe', params2)
|
||
time.sleep(1)
|
||
|
||
# Tries to swipe the screen on the device based on the Params given
|
||
def scroll_up(self, setup_perfectoMobile):
|
||
print("Scroll up")
|
||
setup_perfectoMobile[1].step_start("Scroll up")
|
||
params2 = {}
|
||
params2["start"] = "50%,20%"
|
||
params2["end"] = "50%,80%"
|
||
params2["duration"] = "2"
|
||
time.sleep(1)
|
||
setup_perfectoMobile[0].execute_script('mobile:touch:swipe', params2)
|
||
time.sleep(1)
|
||
|
||
# Returns the Device id
|
||
def getDeviceID(self, 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
|
||
|
||
# Returns the Device Model
|
||
def getDeviceModelName(self, 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
|
||
|
||
# Returns the device info mostly used for OS version in this case
|
||
def get_phone_information(self, setup_perfectoMobile, search_this):
|
||
report = setup_perfectoMobile[1]
|
||
driver = setup_perfectoMobile[0]
|
||
|
||
report.step_start("Get DeviceID")
|
||
params = {'property': search_this}
|
||
device_information = driver.execute_script('mobile:handset:info', params)
|
||
print("device information for " + search_this + " is: ", device_information)
|
||
return device_information
|
||
|
||
# Returns the Data needed for the Device
|
||
def get_ToggleAirplaneMode_data(self, get_device_configuration):
|
||
|
||
passPoint_data = {
|
||
"webURL": "https://www.google.com",
|
||
"lblSearch": "//*[@class='gLFyf']",
|
||
"elelSearch": "(//*[@class='sbic sb43'])[1]",
|
||
"BtnRunSpeedTest": "//*[text()='RUN SPEED TEST']",
|
||
"bundleId-iOS-Settings": get_device_configuration["bundleId-iOS-Settings"],
|
||
"bundleId-iOS-Safari": get_device_configuration["bundleId-iOS-Safari"],
|
||
"downloadMbps": "//*[@id='knowledge-verticals-internetspeedtest__download']/P[@class='spiqle']",
|
||
"UploadMbps": "//*[@id='knowledge-verticals-internetspeedtest__upload']/P[@class='spiqle']",
|
||
# Android
|
||
"platformName-android": get_device_configuration["platformName-android"],
|
||
"appPackage-android": get_device_configuration["appPackage-android"]
|
||
}
|
||
return passPoint_data
|
||
|
||
def report_client(self, value):
|
||
global reporting_client # declare a to be a global
|
||
reporting_client = value # this sets the global value of a
|
||
|
||
def reportPerfecto(testCaseName, testCaseStatus, testErrorMsg, reportURL):
|
||
global testCaseNameList # declare a to be a global
|
||
global testCaseStatusList
|
||
global testCaseErrorMsg
|
||
global testCaseReportURL
|
||
|
||
testCaseNameList.append(testCaseName)
|
||
testCaseStatusList.append(testCaseStatus)
|
||
testCaseErrorMsg.append(str(testErrorMsg))
|
||
testCaseReportURL.append(reportURL)
|
||
|
||
# Gets the Device response from Perfecto
|
||
def response_device(self, model):
|
||
securityToken = self.perfecto_data["securityToken"]
|
||
perfectoURL = self.perfecto_data["perfectoURL"]
|
||
url = f"https://{perfectoURL}.perfectomobile.com/services/handsets?operation=list&securityToken={securityToken}&model={model}"
|
||
resp = requests.get(url=url)
|
||
return ET.fromstring(resp.content)
|
||
|
||
def get_attribute_device(self, responseXml, attribute):
|
||
try:
|
||
return responseXml.find('handset').find(attribute).text
|
||
except:
|
||
print(f"Unable to get value of {attribute} from response")
|
||
return ""
|
||
|
||
# Checks to see if a particular handset is available
|
||
def is_device_available(self, model):
|
||
try:
|
||
responseXml = self.response_device(model)
|
||
except:
|
||
print("Unable to get response.")
|
||
raise Exception("Unable to get response.")
|
||
device_available = self.get_attribute_device(responseXml, 'available')
|
||
print("Result:" + device_available)
|
||
if device_available == 'true':
|
||
return True
|
||
else:
|
||
allocated_to = self.get_attribute_device(responseXml, 'allocatedTo')
|
||
print("The device is currently allocated to:" + allocated_to)
|
||
return False
|
||
|
||
# Checks whether the device is available or not.If the device is not available rechecks depending upon the
|
||
# 'timerValue' and 'timerThreshold' values.With the current parameters it will check after:10,20,40,80 mins.
|
||
def is_device_Available_timeout(self, model):
|
||
device_available = self.is_device_available(model)
|
||
timer_value = 5
|
||
timer_threshold = 80
|
||
if not device_available:
|
||
while timer_value <= timer_threshold:
|
||
print("Last checked at:" + strftime("%Y-%m-%d %H:%M:%S", gmtime()))
|
||
print(f"Waiting for: {timer_value} min(s)")
|
||
time.sleep(timer_value * 60)
|
||
print("Checking now at:" + strftime("%Y-%m-%d %H:%M:%S", gmtime()))
|
||
device_available = self.is_device_available(model)
|
||
if device_available:
|
||
return True
|
||
else:
|
||
timer_value = timer_value + 5
|
||
|
||
if timer_value > timer_threshold:
|
||
return False
|
||
else:
|
||
return True
|
||
else:
|
||
return True
|
||
|
||
def get_device_attribuites(self, model, attribute):
|
||
try:
|
||
responseXml = self.response_device(model)
|
||
except:
|
||
print("Unable to get response.")
|
||
raise Exception("Unable to get response.")
|
||
try:
|
||
attribute_value = self.get_attribute_device(responseXml, str(attribute))
|
||
except:
|
||
attribute_value = False
|
||
return attribute_value
|
||
|
||
# Used to get the Android Device driver obj for further utility,Base function for Android Tests
|
||
def setup_perfectoMobile_android(self, get_device_configuration, perfecto_data):
|
||
from appium import webdriver
|
||
global perfecto_execution_context, driver, deviceModel
|
||
driver = None
|
||
reporting_client = None
|
||
print("Device CONFIG:", get_device_configuration)
|
||
print("Perfect data:", perfecto_data)
|
||
warnings.simplefilter("ignore", ResourceWarning)
|
||
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
||
|
||
capabilities = {
|
||
'platformName': get_device_configuration["platformName-android"],
|
||
'model': get_device_configuration["model-android"],
|
||
'browserName': 'mobileOS',
|
||
# 'automationName' : 'Appium',
|
||
'securityToken': perfecto_data["securityToken"],
|
||
'useAppiumForWeb': 'false',
|
||
'useAppiumForHybrid': 'false',
|
||
# 'bundleId' : request.config.getini("appPackage-android"),
|
||
}
|
||
|
||
if not self.is_device_Available_timeout(capabilities['model']):
|
||
print("Unable to get device.")
|
||
pytest.exit("Exiting Pytest")
|
||
driver = webdriver.Remote(
|
||
'https://' + perfecto_data["perfectoURL"] + '.perfectomobile.com/nexperience/perfectomobile/wd/hub',
|
||
capabilities)
|
||
driver.implicitly_wait(2)
|
||
if os.environ.get('PYTEST_CURRENT_TEST') is not None:
|
||
TestCaseFullName = os.environ.get('PYTEST_CURRENT_TEST').split(':')[-1].split(' ')[0]
|
||
nCurrentTestMethodNameSplit = re.sub(r'\[.*?\]\ *', "", TestCaseFullName)
|
||
else:
|
||
nCurrentTestMethodNameSplit = self.testcase_name
|
||
try:
|
||
# TestCaseName = nCurrentTestMethodNameSplit.removeprefix('test_')
|
||
testcase = nCurrentTestMethodNameSplit.replace('test_', '')
|
||
print("\n\nExecuting TestCase: " + testcase)
|
||
except Exception as e:
|
||
testcase = nCurrentTestMethodNameSplit
|
||
print("\nUpgrade Python to 3.9 to avoid test_ string in your test case name, see below URL")
|
||
# print("https://www.andreagrandi.it/2020/10/11/python39-introduces-removeprefix-removesuffix/")
|
||
|
||
projectname = perfecto_data["projectName"]
|
||
projectversion = perfecto_data["projectVersion"]
|
||
jobname = get_device_configuration["jobName"]
|
||
jobnumber = get_device_configuration["jobNumber"]
|
||
tags = perfecto_data["reportTags"]
|
||
test_case_name = testcase
|
||
print("-----------------------------------------------")
|
||
print(projectname, projectversion, jobnumber, jobname, tags)
|
||
print("-----------------------------------------------")
|
||
# 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(test_case_name, TestContext([], "Perforce"))
|
||
self.report_client(reporting_client)
|
||
|
||
try:
|
||
params = {'property': 'model'}
|
||
deviceModel = driver.execute_script('mobile:handset:info', params)
|
||
except:
|
||
pass
|
||
|
||
# request.addfinalizer(teardown)
|
||
|
||
if driver is None:
|
||
yield -1
|
||
else:
|
||
yield driver, reporting_client
|
||
|
||
# Teardown function used to release all the data that presently hold from Perfecto
|
||
def teardown(self):
|
||
global driver, perfecto_execution_context, deviceModel
|
||
reporting_client = PerfectoReportiumClient(perfecto_execution_context)
|
||
try:
|
||
print("\n---------- Tear Down ----------")
|
||
try:
|
||
params = {'property': 'model'}
|
||
deviceModel = driver.execute_script('mobile:handset:info', params)
|
||
allure.dynamic.link(
|
||
str(reporting_client.report_url()),
|
||
name=str(deviceModel))
|
||
except:
|
||
print("fail to attach video link")
|
||
|
||
print('Report-Url: ' + reporting_client.report_url())
|
||
|
||
print("----------------------------------------------------------\n\n\n\n")
|
||
driver.close()
|
||
except Exception as e:
|
||
print(" -- Exception While Tear Down --")
|
||
driver.close()
|
||
print(e)
|
||
finally:
|
||
try:
|
||
driver.quit()
|
||
except Exception as e:
|
||
print(" -- Exception Not Able To Quit --")
|
||
print(e)
|
||
|
||
# Runs Speed test on OOKla Speed test App on Android devices, OOKLA app should be present on the Device
|
||
def speed_test(self, setup_perfectoMobile):
|
||
driver = setup_perfectoMobile[0]
|
||
driver.switch_to.context('NATIVE_APP')
|
||
self.openApp('org.zwanoo.android.speedtest', setup_perfectoMobile)
|
||
WebDriverWait(driver, 30).until(
|
||
EC.presence_of_element_located(
|
||
(MobileBy.XPATH, "//*[@resource-id='org.zwanoo.android.speedtest:id/go_button']"))).click()
|
||
# Wait untill 2 minutes for the test to complete
|
||
WebDriverWait(driver, 120).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='Test Again']")))
|
||
downloadSpeed = driver.find_element_by_xpath("//*[@text='DOWNLOAD']/parent::*/android.widget.TextView[3]").text
|
||
uploadSpeed = driver.find_element_by_xpath("//*[@text='UPLOAD']/parent::*/android.widget.TextView[3]").text
|
||
print(f"Download speed: {downloadSpeed}")
|
||
print(f"Upload speed: {uploadSpeed}")
|
||
return downloadSpeed, uploadSpeed
|
||
|
||
# Function used to connect to a particular SSID
|
||
def wifi_connect(self, ssid, passkey, 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
|
||
wifi_name = ssid
|
||
ssid_found = False
|
||
|
||
report.step_start("Switching Driver Context")
|
||
print("Switching Context to Native")
|
||
contexts = driver.contexts
|
||
driver.switch_to.context(contexts[0])
|
||
|
||
# Open Settings Application
|
||
self.openApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
device_model_name = self.getDeviceModelName(setup_perfectoMobile)
|
||
print("Selected Device Model: " + device_model_name)
|
||
|
||
if device_model_name != "Pixel 4":
|
||
logging.info("Selected Model is not Pixel 4")
|
||
report.step_start("Set Wifi Network to " + wifi_name)
|
||
|
||
# -----------------To Open Connections page-----------------------
|
||
try:
|
||
print("Verifying Connected Wifi Connection")
|
||
logging.info("Verifying Connected Wifi Connection")
|
||
report.step_start("Click Connections")
|
||
conn_element = driver.find_element_by_xpath("//*[@text='Connections']")
|
||
conn_element.click()
|
||
|
||
# ---------------------Open WIFI page-------------------------------
|
||
try:
|
||
report.step_start("Clicking Wi-Fi")
|
||
print("Clicking WIFI")
|
||
logging.info("Clicking WIFI")
|
||
time.sleep(3)
|
||
wifi_element = WebDriverWait(driver, 10).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='Wi-Fi']")))
|
||
wifi_element.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")
|
||
logging.info("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")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile
|
||
else:
|
||
print("Switch is already On")
|
||
logging.info("Switch is already On")
|
||
# self.check_if_no_internet_popup(driver)
|
||
except:
|
||
print("Couldn't turn on WIFI switch")
|
||
logging.error("Couldn't turn on WIFI switch")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile
|
||
except:
|
||
print("No Switch element found")
|
||
logging.error("No Switch element found")
|
||
# ---------------------This is to Forget current connected SSID-------------------------------
|
||
if self.get_phone_information(setup_perfectoMobile,
|
||
search_this="osVersion") != "12":
|
||
print("Trying to forget already connected ssid in Device OS-version=!12")
|
||
try: # To deal with already connected SSID
|
||
self.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 existing ssid
|
||
print("To forget ssid")
|
||
logging.info("To forget ssid")
|
||
self.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:
|
||
self.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")
|
||
logging.info("Forget old ssid")
|
||
except:
|
||
print("Couldn't forget ssid")
|
||
logging.error("Couldn't forget ssid")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile
|
||
except:
|
||
print("Couldn't get into additional details")
|
||
logging.error("Couldn't get into additional details")
|
||
except:
|
||
print("No Connected SSIDS")
|
||
logging.warning("No Connected SSIDS")
|
||
else:
|
||
print("Trying to forget already connected ssid in Device OS-version=12")
|
||
try: # To deal with already connected SSID
|
||
self.check_if_no_internet_popup(driver)
|
||
network_category = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/connected_list']/android.widget."
|
||
"LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]"
|
||
"/android.widget.RelativeLayout[2]")
|
||
try: # To forget existing ssid
|
||
print("To forget ssid in OS-Version 12")
|
||
logging.info("To forget ssid in OS-Version 12")
|
||
self.check_if_no_internet_popup(driver)
|
||
additional_details_element = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/wifi_details']")
|
||
additional_details_element.click()
|
||
try:
|
||
print("To forget ssid in OS-Version 12")
|
||
self.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/navigation_bar_item_icon_view']")
|
||
forget_ssid.click()
|
||
print("Forgot old ssid")
|
||
logging.info("Forgot old ssid")
|
||
except:
|
||
print("Couldn't forget ssid")
|
||
logging.error("Couldn't forget ssid")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile
|
||
except:
|
||
print("Couldn't get into additional details")
|
||
logging.error("Couldn't get into additional details")
|
||
except:
|
||
print("No Connected SSIDS")
|
||
logging.warning("No Connected SSIDS")
|
||
# ----------------------This is to Forget current connected SSID--------------------------------
|
||
|
||
# time.sleep(2)
|
||
print("Selecting Wifi: " + wifi_name)
|
||
logging.info("Selecting SSID")
|
||
# allure.attach(name= body=str("Selecting Wifi: " + wifi_name))
|
||
available_ssids = False
|
||
# This is To get all available ssids
|
||
# ------------------------------------------------------
|
||
try:
|
||
for k in range(6):
|
||
available_ssids = self.get_all_available_ssids(driver, device_model_name)
|
||
print("active_ssid_list: ", available_ssids)
|
||
logging.info("Available Ssids:" + str(available_ssids))
|
||
allure.attach(name="Available SSIDs in device: ", body=str(available_ssids))
|
||
try:
|
||
if wifi_name not in available_ssids:
|
||
self.scrollDown(setup_perfectoMobile)
|
||
time.sleep(2)
|
||
else:
|
||
ssid_found = True
|
||
print(wifi_name + " : Found in Device")
|
||
# allure.attach(name= body=str(wifi_name+" : Found in Device"))
|
||
break
|
||
except:
|
||
print("couldn't find wifi in available ssid")
|
||
logging.error("couldn't find wifi in available ssid")
|
||
if not ssid_found:
|
||
print("could not found " + str(wifi_name) + " in device")
|
||
logging.error("Couldn't find the SSID")
|
||
# allure.attach(name= body=str("could not found" + wifi_name + " in device"))
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
except:
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found,
|
||
# -------------------------------------------------------
|
||
|
||
# Selecting WIFI
|
||
# -------------------------------------------------------
|
||
try:
|
||
report.step_start("Selecting Wifi: " + wifi_name)
|
||
print("Clicking WIFI")
|
||
logging.info("Clicking SSID")
|
||
wifi_selection_element = WebDriverWait(driver, 35).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='" + wifi_name + "']")))
|
||
wifi_selection_element.click()
|
||
self.check_if_no_internet_popup(driver)
|
||
except Exception as e:
|
||
print("Exception on Selecting Wifi Network. Please check wifi Name or signal")
|
||
logging.error("Exception on Selecting Wifi Network. Please check wifi Name or signal")
|
||
# request.config.cache.set(key="SelectingWifiFailed", value=str(e))
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
# -------------------------------------------------------
|
||
# Set password if Needed
|
||
# -------------------------------------------------------
|
||
try:
|
||
self.check_if_no_internet_popup(driver)
|
||
time.sleep(3)
|
||
report.step_start("Set Wifi Password")
|
||
print("Set Wifi password")
|
||
logging.info("Set Wifi password")
|
||
passkeywordElement = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/edittext']")
|
||
passkeywordElement.send_keys(passkey)
|
||
except NoSuchElementException:
|
||
print("Password Page Not Loaded, password May be cached in the System")
|
||
logging.error("Password Page Not Loaded, password May be cached in the System")
|
||
self.check_if_no_internet_popup(driver)
|
||
# -------------------------------------------------------
|
||
|
||
# Click on connect button
|
||
# -------------------------------------------------------
|
||
try:
|
||
time.sleep(5)
|
||
report.step_start("Click Connect Button")
|
||
print("Click Connect")
|
||
logging.info("Click Connect")
|
||
joinBTNElement = WebDriverWait(driver, 35).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='Connect']")))
|
||
joinBTNElement.click()
|
||
except NoSuchElementException:
|
||
print("Connect Button Not Enabled...Verify if Password is set properly")
|
||
logging.error("Connect Button Not Enabled...Verify if Password is set properly")
|
||
self.check_if_no_internet_popup(driver)
|
||
# -------------------------------------------------------
|
||
|
||
# Verify if WiFi is connected
|
||
# -------------------------------------------------------
|
||
if self.get_phone_information(setup_perfectoMobile,
|
||
search_this="osVersion") != "12":
|
||
try:
|
||
report.step_start("Verify if Wifi is Connected")
|
||
logging.info("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='" + wifi_name + "']")))
|
||
ssid_with_internet = True
|
||
print("Wifi Successfully Connected")
|
||
logging.info("Wifi Successfully Connected")
|
||
# time.sleep(5)
|
||
self.check_if_no_internet_popup(driver)
|
||
except:
|
||
try:
|
||
self.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='"
|
||
+ wifi_name + "']")))
|
||
print("Wifi Successfully Connected without internet")
|
||
logging.info("Wifi Successfully Connected without internet")
|
||
self.check_if_no_internet_popup(driver)
|
||
except:
|
||
try:
|
||
report.step_start("Verify if Wifi is Connected - 2")
|
||
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='" + wifi_name + "']")))
|
||
ssid_with_internet = True
|
||
print("Wifi Successfully Connected")
|
||
logging.info("Wifi Successfully Connected")
|
||
except NoSuchElementException:
|
||
print("Wifi Connection Error: " + wifi_name)
|
||
logging.error("Wifi Connection Error")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
else:
|
||
try:
|
||
report.step_start(
|
||
"Verifying wifi connection status connected/connected without internet")
|
||
self.check_if_no_internet_popup(driver)
|
||
self.check_if_no_internet_popup(driver)
|
||
|
||
wifi_connection_name = WebDriverWait(driver, 50).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH,
|
||
"//*[@resource-id='com.android.settings"
|
||
":id/connected_list']/android.widget.LinearLayout[1]"
|
||
"/android.widget.LinearLayout[1]/android.widget."
|
||
"LinearLayout[1]/android.widget.RelativeLayout[2]/"
|
||
"android.widget.TextView[1]"
|
||
)))
|
||
if wifi_connection_name.text == wifi_name:
|
||
wifi_connection_status = WebDriverWait(driver, 50).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH,
|
||
"//*[@resource-id='com.android.settings:id/summary']"
|
||
)))
|
||
if wifi_connection_status.text == "Connected":
|
||
ssid_with_internet = True
|
||
print("Connected with internet")
|
||
logging.info("Connected with internet")
|
||
|
||
else:
|
||
ssid_with_internet = False
|
||
print("Wifi Successfully Connected without internet")
|
||
logging.info("Wifi Successfully Connected without internet")
|
||
self.check_if_no_internet_popup(driver)
|
||
# Go into additional details here
|
||
else:
|
||
# Connected to some other wifi, makes sense to close app and fail this testcase
|
||
logging.error("Connected to some other wifi")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
except:
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
|
||
# ---------------------To Turn on WIFi Switch if already OFF-------------------------------
|
||
|
||
except:
|
||
print("Couldn't find wifi Button")
|
||
logging.error("Couldn't find wifi Button")
|
||
# ------------------Open WIFI page----------------------------------
|
||
|
||
except:
|
||
print("Exception: Verify Xpath - Update/check Xpath for Click Connections")
|
||
logging.error("Exception: Verify Xpath - Update/check Xpath for Click Connections")
|
||
# -----------------To Open Connections page---------------------------
|
||
# --------------------Pixel 4 code---------------------------
|
||
else:
|
||
report.step_start("Set Wifi Network to " + wifi_name)
|
||
|
||
# -----------------To Open Connections page-----------------------
|
||
try:
|
||
print("Verifying Connected Wifi Connection")
|
||
report.step_start("Click Network & internet in pixel4")
|
||
conn_element = driver.find_element_by_xpath("//*[@text='Network & internet']")
|
||
conn_element.click()
|
||
# ---------------------Open WIFI page-------------------------------
|
||
try:
|
||
report.step_start("Clicking Wi-Fi")
|
||
print("Clicking WIFI")
|
||
time.sleep(3)
|
||
wifi_element = WebDriverWait(driver, 10).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='Wi‑Fi']")))
|
||
wifi_element.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_widget']")
|
||
get_switch_text = get_switch_text_element.text
|
||
# if get_switch_text is not None:
|
||
# switch_text = "OFF"
|
||
# else:
|
||
# switch_text = "ON"
|
||
switch_text = get_switch_text
|
||
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
|
||
self.scrollDown(setup_perfectoMobile)
|
||
print("Sleeping for: ", i)
|
||
time.sleep(i)
|
||
pass
|
||
if switch_text == "OFF":
|
||
print("Switch is Still OFF")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
else:
|
||
print("Switch is already On")
|
||
self.check_if_no_internet_popup(driver)
|
||
except:
|
||
print("Couldn't turn on WIFI switch")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
|
||
# ---------------------This is to Forget current connected SSID-------------------------------
|
||
try: # To deal with already connected SSID
|
||
self.check_if_no_internet_popup(driver)
|
||
network_category = driver.find_element_by_xpath("//*[@text='Connected']")
|
||
try: # To forget existing ssid
|
||
print("To forget ssid")
|
||
self.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:
|
||
self.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")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
except:
|
||
print("No Connected SSIDS")
|
||
# ----------------------This is to Forget current connected SSID--------------------------------
|
||
|
||
time.sleep(2)
|
||
print("Selecting Wifi: " + wifi_name)
|
||
# allure.attach(name= body=str("Selecting Wifi: " + wifi_name))
|
||
ssid_found = False
|
||
available_ssids = False
|
||
# This is To get all available ssids
|
||
# ------------------------------------------------------
|
||
try:
|
||
for k in range(5):
|
||
available_ssids = self.get_all_available_ssids(driver, device_model_name)
|
||
print("active_ssid_list: ", available_ssids)
|
||
allure.attach(name="Available SSIDs in device: ", body=str(available_ssids))
|
||
try:
|
||
if wifi_name not in available_ssids:
|
||
self.scrollDown(setup_perfectoMobile)
|
||
time.sleep(2)
|
||
else:
|
||
ssid_found = True
|
||
print(wifi_name + " : Found in Device")
|
||
# allure.attach(name= body=str(wifi_name+" : Found in Device"))
|
||
break
|
||
except:
|
||
print("couldn't find wifi in available ssid")
|
||
if not ssid_found:
|
||
ssid_not_found = False
|
||
for k in range(5):
|
||
available_ssids = self.get_all_available_ssids(driver, device_model_name)
|
||
print("active_ssid_list: ", available_ssids)
|
||
allure.attach(name="Available SSIDs in device: ", body=str(available_ssids))
|
||
try:
|
||
if wifi_name not in available_ssids:
|
||
self.scroll_up(driver)
|
||
time.sleep(2)
|
||
else:
|
||
ssid_not_found = True
|
||
print(wifi_name + " : Found in Device")
|
||
# allure.attach(name= body=str(wifi_name+" : Found in Device"))
|
||
break
|
||
except:
|
||
print("couldn't find wifi in available ssid")
|
||
if not ssid_not_found:
|
||
print("could not found " + wifi_name + " in device")
|
||
# allure.attach(name= body=str("could not found" + wifi_name + " in device"))
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
except:
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
# -------------------------------------------------------
|
||
|
||
# Selecting WIFI
|
||
# -------------------------------------------------------
|
||
try:
|
||
report.step_start("Selecting Wifi: " + wifi_name)
|
||
wifi_selection_element = WebDriverWait(driver, 35).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='" + wifi_name + "']")))
|
||
wifi_selection_element.click()
|
||
self.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))
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
# -------------------------------------------------------
|
||
|
||
# Set password if Needed
|
||
# -------------------------------------------------------
|
||
try:
|
||
time.sleep(3)
|
||
self.check_if_no_internet_popup(driver)
|
||
report.step_start("Set Wifi Password")
|
||
print("Entering password")
|
||
passkeywordElement = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/password']")
|
||
passkeywordElement.send_keys(passkey)
|
||
except NoSuchElementException:
|
||
print("Password Page Not Loaded, password May be cached in the System")
|
||
self.check_if_no_internet_popup(driver)
|
||
# -------------------------------------------------------
|
||
|
||
# Click on connect button
|
||
# -------------------------------------------------------
|
||
try:
|
||
report.step_start("Click Connect Button")
|
||
time.sleep(5)
|
||
joinBTNElement = driver.find_element_by_xpath("//*[@text='Connect']")
|
||
joinBTNElement.click()
|
||
except NoSuchElementException:
|
||
print("Connect Button Not Enabled...Verify if Password is set properly ")
|
||
self.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='" + wifi_name + "']")))
|
||
ssid_with_internet = True
|
||
print("Wifi Successfully Connected")
|
||
# time.sleep(5)
|
||
self.check_if_no_internet_popup(driver)
|
||
except:
|
||
try:
|
||
print("Not able to verify the connected WiFi. Scrolling up.")
|
||
self.scroll_up(driver)
|
||
self.scroll_up(driver)
|
||
# self.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='" + wifi_name + "']")))
|
||
print("Wifi Successfully Connected without internet")
|
||
self.check_if_no_internet_popup(driver)
|
||
except:
|
||
try:
|
||
report.step_start("Verify if Wifi is Connected")
|
||
print("Verifying after scrolling")
|
||
self.scroll_up(driver)
|
||
WifiInternetErrMsg = WebDriverWait(driver, 60).until(
|
||
EC.presence_of_element_located((
|
||
MobileBy.XPATH,
|
||
"//*[@resource-id='android:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + wifi_name + "']")))
|
||
ssid_with_internet = True
|
||
print("Wifi Successfully Connected")
|
||
except NoSuchElementException:
|
||
print("Wifi Connection Error: " + wifi_name)
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
# -------------------------------------------------------
|
||
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---------------------------
|
||
|
||
# self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
def get_ip_address(self, ssid, setup_perfectoMobile, connData):
|
||
report = setup_perfectoMobile[1]
|
||
driver = setup_perfectoMobile[0]
|
||
print("----------Get IP Address---------------")
|
||
device_model_name = self.getDeviceModelName(setup_perfectoMobile)
|
||
print("Selected Device Model: " + device_model_name)
|
||
|
||
if device_model_name != "Pixel 4":
|
||
logging.info("Selected Model is not Pixel 4")
|
||
report.step_start("Getting IP address")
|
||
# Get into Additional Details
|
||
# To Get an IP Address
|
||
# -------------------------------------------------------
|
||
if self.get_phone_information(setup_perfectoMobile,
|
||
search_this="osVersion") != "12":
|
||
try:
|
||
print("Into additional details")
|
||
logging.info("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_ele = driver.find_element_by_xpath(
|
||
"//*[@text='IP address']/parent::*/android.widget."
|
||
"TextView[@resource-id='com.android.settings:id/summary']")
|
||
ip_address_ele_text = ip_address_ele.text
|
||
print("Device IP address is :", ip_address_ele_text)
|
||
return ip_address_ele_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)
|
||
return ip_address_element_text
|
||
except:
|
||
print("IP address element not found")
|
||
logging.error("IP address element not found")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
assert False
|
||
# --------------------Added for ssid security check--------------------------
|
||
try:
|
||
time.sleep(2)
|
||
security_name_element = driver.find_element_by_xpath(
|
||
"//*[@text='Security']/parent::*/android.widget."
|
||
"TextView[@resource-id='com.android.settings:id/summary']")
|
||
security_name_element_text = security_name_element.text
|
||
print("Ssid security is :", security_name_element_text)
|
||
allure.attach(name="Ssid Security:", body=str(security_name_element_text))
|
||
except:
|
||
print("Security is not available")
|
||
logging.error("Security is not available")
|
||
# --------------------Added for ssid Name check--------------------------
|
||
try:
|
||
time.sleep(2)
|
||
ssid_name_element = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/entity_header_title']")
|
||
ssid_name_element_text = ssid_name_element.text
|
||
print("Ssid Name is :", ssid_name_element_text)
|
||
allure.attach(name="Ssid connected:", body=str(ssid_name_element_text))
|
||
except:
|
||
print("Ssid name not available")
|
||
logging.error("Ssid name not available")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
assert False
|
||
if ssid_name_element_text == ssid:
|
||
print("Wifi is connected to the expected ssid")
|
||
logging.info("Wifi is connected to the expected ssid")
|
||
else:
|
||
print("Wifi is not connected to the expected ssid")
|
||
logging.error("Wifi is not connected to the expected ssid")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
assert False
|
||
try:
|
||
self.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")
|
||
logging.info("Auto reconnect turning off")
|
||
else:
|
||
print("Auto reconnect is already off")
|
||
logging.info("Auto reconnect is already off")
|
||
except:
|
||
print("Couldn't find auto reconnect element")
|
||
logging.error("Couldn't find auto reconnect element")
|
||
|
||
# ------------------------------- Forget SSID ----------------
|
||
try:
|
||
self.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")
|
||
logging.info("Forgetting ssid")
|
||
except:
|
||
print("Couldn't forget ssid")
|
||
logging.error("Couldn't forget ssid")
|
||
except:
|
||
print("Couldn't get into Additional settings")
|
||
logging.error("Couldn't get into Additional settings")
|
||
# -------------------------------------------------------
|
||
else:
|
||
try:
|
||
print("Into additional details")
|
||
logging.info("Into additional details")
|
||
time.sleep(2)
|
||
additional_details_element = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/wifi_details']")
|
||
additional_details_element.click()
|
||
|
||
try:
|
||
print("click on view more")
|
||
logging.info("click on view more")
|
||
additional_details_element = WebDriverWait(driver, 50).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='View more']")))
|
||
additional_details_element.click()
|
||
except:
|
||
pass
|
||
|
||
try:
|
||
time.sleep(2)
|
||
ssid_name_element = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/entity_header_title']")
|
||
ssid_name_element_text = ssid_name_element.text
|
||
print("Ssid Name is :", ssid_name_element_text)
|
||
allure.attach(name="Ssid connected:", body=str(ssid_name_element_text))
|
||
except:
|
||
print("Ssid name not available")
|
||
logging.error("Ssid name not available")
|
||
pass
|
||
|
||
if (ssid_name_element_text == ssid):
|
||
print("Wifi is connected to the expected ssid")
|
||
logging.info("Wifi is connected to the expected ssid")
|
||
ip_address_element_text = "SSID Match, S20 Does Not support scrolling"
|
||
ssid_with_internet = "SSID Match, S20 Does Not support scrolling"
|
||
# return ssid_with_internet
|
||
else:
|
||
print("Wifi is not connected to the expected ssid")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
|
||
report.step_start("Scrolling for ip address - 1")
|
||
# if device_model_name == "Galaxy S20":
|
||
# print("Scrolling for S20")
|
||
driver.swipe(470, 1400, 470, 1000, 400)
|
||
# else:
|
||
# self.scrollDown(driver)
|
||
|
||
report.step_start("Scrolling for ip address - 2")
|
||
# if device_model_name == "Galaxy S20":
|
||
# print("Scrolling for S20")
|
||
driver.swipe(470, 1400, 470, 1000, 400)
|
||
# else:
|
||
# self.scrollDown(driver)
|
||
|
||
report.step_start("Scrolling for ip address - 3")
|
||
# if device_model_name == "Galaxy S20":
|
||
# print("Scrolling for S20")
|
||
driver.swipe(470, 1400, 470, 1000, 400)
|
||
# else:
|
||
# self.scrollDown(driver)
|
||
report.step_start("looking for ip address")
|
||
|
||
try:
|
||
ip_address_element_text = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/recycler_view']/"
|
||
"android.widget.LinearLayout[4]/android.widget.RelativeLayout[1]/"
|
||
"android.widget.TextView[2]")
|
||
ip_address_element_text = ip_address_element_text.text
|
||
print("IP Address:", ip_address_element_text)
|
||
return ip_address_element_text
|
||
|
||
except:
|
||
print("Unable to get IP address")
|
||
logging.error("Unable to get IP address")
|
||
return None
|
||
except:
|
||
print("Couldn't get into Additional settings")
|
||
logging.error("Couldn't get into Additional settings")
|
||
# -------------------------------------------------------
|
||
# ----------------Pixel 4 code------------
|
||
else:
|
||
# -------------------------------------------------------
|
||
|
||
# Get into Additional Details
|
||
# To Get an IP Address
|
||
# -------------------------------------------------------
|
||
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")
|
||
# Scroll Down
|
||
self.scrollDown(setup_perfectoMobile)
|
||
# report.step_start("Scroll Down")
|
||
# for i in range(4):
|
||
# print("Scrolling...", i)
|
||
# try:
|
||
# value = driver.find_element_by_xpath("//*[@text='IP address']").is_displayed()
|
||
# if value is True:
|
||
# break
|
||
# except:
|
||
# print("Scrolling started...")
|
||
# driver.swipe(470, 1400, 470, 1000, 400)
|
||
# driver.implicitly_wait(2)
|
||
# continue
|
||
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)
|
||
return ip_address_element_text
|
||
except:
|
||
print("IP address element not found")
|
||
return None
|
||
except:
|
||
print("Couldn't get into Additional settings")
|
||
|
||
def wifi_disconnect(self, ssid, 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
|
||
self.openApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
device_model_name = self.getDeviceModelName(setup_perfectoMobile)
|
||
print("Selected Device Model: " + device_model_name)
|
||
|
||
if device_model_name != "Pixel 4":
|
||
report.step_start("Set Wifi Network to " + ssid)
|
||
|
||
# -----------------To Open Connections page-----------------------
|
||
try:
|
||
print("Verifying Connected Wifi Connection")
|
||
report.step_start("Click Connections")
|
||
conn_element = driver.find_element_by_xpath("//*[@text='Connections']")
|
||
conn_element.click()
|
||
|
||
# ---------------------Open WIFI page-------------------------------
|
||
try:
|
||
report.step_start("Clicking Wi-Fi")
|
||
print("Clicking WIFI")
|
||
wifi_element = driver.find_element_by_xpath("//*[@text='Wi-Fi']")
|
||
wifi_element.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")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
else:
|
||
print("Switch is already On")
|
||
self.check_if_no_internet_popup(driver)
|
||
except:
|
||
print("Couldn't turn on WIFI switch")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
|
||
# ---------------------This is to Forget current connected SSID-------------------------------
|
||
if self.get_phone_information(setup_perfectoMobile,
|
||
search_this="osVersion") != "12":
|
||
try: # To deal with already connected SSID
|
||
self.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")
|
||
self.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:
|
||
self.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"))
|
||
self.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")
|
||
else:
|
||
try:
|
||
print("Into additional details")
|
||
time.sleep(2)
|
||
additional_details_element = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/wifi_details']")
|
||
additional_details_element.click()
|
||
except:
|
||
print("Couldn't get into additional details")
|
||
logging.info("Couldn't get into additional details")
|
||
try:
|
||
self.check_if_no_internet_popup(driver)
|
||
forget_ssid = driver.find_element_by_xpath(
|
||
"//*[@text='Forget']")
|
||
forget_ssid.click()
|
||
print("Forgetting ssid")
|
||
except:
|
||
print("Couldn't Forget Ssid or No connected Ssid")
|
||
logging.warning("Couldn't Forget Ssid or No connected Ssid")
|
||
# ----------------------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---------------------------
|
||
else: # -----------------------Pixel4 code-------------------------
|
||
report.step_start("Set Wifi Network to " + ssid)
|
||
|
||
# -----------------To Open Connections page-----------------------
|
||
try:
|
||
print("Verifying Connected Wifi Connection")
|
||
report.step_start("Click Network & internet")
|
||
conn_element = driver.find_element_by_xpath("//*[@text='Network & internet']")
|
||
conn_element.click()
|
||
|
||
# ---------------------Open WIFI page-------------------------------
|
||
try:
|
||
report.step_start("Clicking Wi-Fi")
|
||
print("Clicking WIFI")
|
||
time.sleep(3)
|
||
wifi_element = WebDriverWait(driver, 10).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='Wi‑Fi']")))
|
||
wifi_element.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='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
|
||
self.scrollDown(setup_perfectoMobile)
|
||
print("Sleeping for: ", i)
|
||
time.sleep(i)
|
||
pass
|
||
if switch_text == "Off":
|
||
print("Switch is Still OFF")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
else:
|
||
print("Switch is already On")
|
||
self.check_if_no_internet_popup(driver)
|
||
except:
|
||
print("Couldn't turn on WIFI switch")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
# ---------------------This is to Forget current connected SSID-------------------------------
|
||
try: # To deal with already connected SSID
|
||
self.check_if_no_internet_popup(driver)
|
||
network_category = driver.find_element_by_xpath("//*[@text='Connected']")
|
||
try: # To forget existing ssid
|
||
print("Entering into additional details")
|
||
self.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:
|
||
print("To forget ssid")
|
||
self.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")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
except:
|
||
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")
|
||
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
|
||
#---------------- WIFI connect for Enterprise security------------------
|
||
def wifi_connect_eap(self, ssid, 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
|
||
wifi_name = ssid
|
||
ssid_found = False
|
||
report.step_start("Switching Driver Context")
|
||
print("Switching Context to Native")
|
||
contexts = driver.contexts
|
||
driver.switch_to.context(contexts[0])
|
||
|
||
# Open Settings Application
|
||
self.openApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
device_model_name = self.getDeviceModelName(setup_perfectoMobile)
|
||
print("Selected Device Model: " + device_model_name)
|
||
|
||
if device_model_name != "Pixel 4":
|
||
logging.info("Selected Model is not Pixel 4")
|
||
report.step_start("Set Wifi Network to " + wifi_name)
|
||
|
||
# -----------------To Open Connections page-----------------------
|
||
try:
|
||
print("Verifying Connected Wifi Connection")
|
||
logging.info("Verifying Connected Wifi Connection")
|
||
report.step_start("Click Connections")
|
||
conn_element = driver.find_element_by_xpath("//*[@text='Connections']")
|
||
conn_element.click()
|
||
|
||
# ---------------------Open WIFI page-------------------------------
|
||
try:
|
||
report.step_start("Clicking Wi-Fi")
|
||
print("Clicking WIFI")
|
||
logging.info("Clicking WIFI")
|
||
time.sleep(3)
|
||
wifi_element = WebDriverWait(driver, 10).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='Wi-Fi']")))
|
||
wifi_element.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")
|
||
logging.info("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")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
else:
|
||
print("Switch is already On")
|
||
logging.info("Switch is already On")
|
||
# self.check_if_no_internet_popup(driver)
|
||
except:
|
||
print("Couldn't turn on WIFI switch")
|
||
logging.error("Couldn't turn on WIFI switch")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
except:
|
||
print("No Switch element found")
|
||
logging.error("No Switch element found")
|
||
# ---------------------This is to Forget current connected SSID-------------------------------
|
||
if self.get_phone_information(setup_perfectoMobile,
|
||
search_this="osVersion") != "12":
|
||
print("Trying to forget already connected ssid in Device OS-version=!12")
|
||
try: # To deal with already connected SSID
|
||
self.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 existing ssid
|
||
print("To forget ssid")
|
||
logging.info("To forget ssid")
|
||
self.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:
|
||
self.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")
|
||
logging.info("Forget old ssid")
|
||
except:
|
||
print("Couldn't forget ssid")
|
||
logging.error("Couldn't forget ssid")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
except:
|
||
print("Couldn't get into additional details")
|
||
logging.error("Couldn't get into additional details")
|
||
except:
|
||
print("No Connected SSIDS")
|
||
logging.warning("No Connected SSIDS")
|
||
else:
|
||
print("Trying to forget already connected ssid in Device OS-version=12")
|
||
try: # To deal with already connected SSID
|
||
self.check_if_no_internet_popup(driver)
|
||
network_category = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/connected_list']/android.widget."
|
||
"LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]"
|
||
"/android.widget.RelativeLayout[2]")
|
||
try: # To forget existing ssid
|
||
print("To forget ssid in OS-Version 12")
|
||
logging.info("To forget ssid in OS-Version 12")
|
||
self.check_if_no_internet_popup(driver)
|
||
additional_details_element = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/wifi_details']")
|
||
additional_details_element.click()
|
||
try:
|
||
print("To forget ssid in OS-Version 12")
|
||
self.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/navigation_bar_item_icon_view']")
|
||
forget_ssid.click()
|
||
print("Forgot old ssid")
|
||
logging.info("Forgot old ssid")
|
||
except:
|
||
print("Couldn't forget ssid")
|
||
logging.error("Couldn't forget ssid")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
except:
|
||
print("Couldn't get into additional details")
|
||
logging.error("Couldn't get into additional details")
|
||
except:
|
||
print("No Connected SSIDS")
|
||
logging.warning("No Connected SSIDS")
|
||
# ----------------------This is to Forget current connected SSID--------------------------------
|
||
|
||
# time.sleep(2)
|
||
print("Selecting Wifi: " + wifi_name)
|
||
logging.info("Selecting SSID")
|
||
# allure.attach(name= body=str("Selecting Wifi: " + wifi_name))
|
||
available_ssids = False
|
||
# This is To get all available ssids
|
||
# ------------------------------------------------------
|
||
try:
|
||
for k in range(10):
|
||
available_ssids = self.get_all_available_ssids(driver, device_model_name)
|
||
print("active_ssid_list: ", available_ssids)
|
||
allure.attach(name="Available SSIDs in device: ", body=str(available_ssids))
|
||
try:
|
||
if ssid not in available_ssids:
|
||
self.scrollDown(setup_perfectoMobile)
|
||
time.sleep(2)
|
||
else:
|
||
ssid_found = True
|
||
print(ssid + " : Found in Device")
|
||
logging.info(ssid + " : Found in Device")
|
||
# allure.attach(name= body=str(ssid+" : Found in Device"))
|
||
break
|
||
except:
|
||
print("couldn't find wifi in available ssid")
|
||
logging.warning("couldn't find wifi in available ssid")
|
||
if not ssid_found:
|
||
print("could not found " + ssid + " in device")
|
||
logging.info("could not found " + ssid + " in device")
|
||
# allure.attach(name= body=str("could not found" + ssid + " in device"))
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
except:
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
# -------------------------------------------------------
|
||
|
||
# Selecting WIFI
|
||
# -------------------------------------------------------
|
||
try:
|
||
report.step_start("Selecting Wifi: " + wifi_name)
|
||
print("Clicking WIFI")
|
||
logging.info("Clicking SSID")
|
||
wifi_selection_element = WebDriverWait(driver, 35).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='" + wifi_name + "']")))
|
||
wifi_selection_element.click()
|
||
self.check_if_no_internet_popup(driver)
|
||
except Exception as e:
|
||
print("Exception on Selecting Wifi Network. Please check wifi Name or signal")
|
||
logging.error("Exception on Selecting Wifi Network. Please check wifi Name or signal")
|
||
# request.config.cache.set(key="SelectingWifiFailed", value=str(e))
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
# -------------------------------------------------------
|
||
|
||
# Set username
|
||
# -------------------------------------------------------
|
||
try:
|
||
# driver.implicitly_wait(3)
|
||
report.step_start("Set User name")
|
||
print("Set User name")
|
||
logging.info("Set User name")
|
||
wifi_user_element = WebDriverWait(driver, 40).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH,
|
||
"//*[@resource-id='com.android.settings:id/edittext' and @password='false']")))
|
||
wifi_user_element.send_keys(user)
|
||
except NoSuchElementException:
|
||
print("User name not Loaded")
|
||
logging.error("User name not Loaded")
|
||
# -------------------------------------------------------
|
||
|
||
# Set Password
|
||
# -------------------------------------------------------
|
||
try:
|
||
# driver.implicitly_wait(6)
|
||
report.step_start("Set Password")
|
||
print("Set Password")
|
||
logging.info("Set Password")
|
||
wifi_password_element = WebDriverWait(driver, 40).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='Enter password']")))
|
||
wifi_password_element.send_keys(ttls_passwd)
|
||
print("Entered Password")
|
||
except NoSuchElementException:
|
||
print("Password Page Not Loaded, password May be cached in the System")
|
||
logging.error("Password Page Not Loaded, password May be cached in the System")
|
||
# -------------------------------------------------------
|
||
# Selecting certificate
|
||
# -------------------------------------------------------
|
||
try:
|
||
# driver.implicitly_wait(3)
|
||
report.step_start("Selecting CA Cert")
|
||
print("Selecting CA Cert")
|
||
logging.info("Selecting CA Cert")
|
||
cert_element = WebDriverWait(driver, 30).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='Select certificate']")))
|
||
cert_element.click()
|
||
except NoSuchElementException:
|
||
print("Selecting certificate failed")
|
||
logging.error("Selecting certificate failed")
|
||
# -------------------------------------------------------
|
||
# Validating certificate
|
||
# -------------------------------------------------------
|
||
try:
|
||
# driver.implicitly_wait(3)
|
||
report.step_start("Validting CA Cert")
|
||
print("Validting CA Cert")
|
||
logging.info("Validting CA Cert")
|
||
cert_element = WebDriverWait(driver, 10).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text=\"Don't validate\"]")))
|
||
cert_element.click()
|
||
except NoSuchElementException:
|
||
print("validation failed")
|
||
logging.error("validation failed")
|
||
# -------------------------------------------------------
|
||
if (device_model_name == "Galaxy S9"):
|
||
driver.hide_keyboard()
|
||
print("Hide keyboard")
|
||
# Click on connect button
|
||
# -------------------------------------------------------
|
||
try:
|
||
# driver.implicitly_wait(3)
|
||
report.step_start("Click Connect Button")
|
||
print("Click Connect Button")
|
||
logging.info("Click Connect Button")
|
||
joinBTNElement = WebDriverWait(driver, 10).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='Connect']")))
|
||
joinBTNElement.click()
|
||
except NoSuchElementException:
|
||
print("Connect Button Not Enabled...Verify if Password is set properly ")
|
||
logging.error("Connect Button Not Enabled...Verify if Password is set properly ")
|
||
self.check_if_no_internet_popup(driver)
|
||
# -------------------------------------------------------
|
||
|
||
# Verify if WiFi is connected
|
||
# -------------------------------------------------------
|
||
if self.get_phone_information(setup_perfectoMobile,
|
||
search_this="osVersion") != "12":
|
||
try:
|
||
report.step_start("Verify if Wifi is Connected")
|
||
logging.info("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='" + wifi_name + "']")))
|
||
ssid_with_internet = True
|
||
print("Wifi Successfully Connected")
|
||
logging.info("Wifi Successfully Connected")
|
||
# time.sleep(5)
|
||
self.check_if_no_internet_popup(driver)
|
||
except:
|
||
try:
|
||
self.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='"
|
||
+ wifi_name + "']")))
|
||
print("Wifi Successfully Connected without internet")
|
||
logging.info("Wifi Successfully Connected without internet")
|
||
self.check_if_no_internet_popup(driver)
|
||
except:
|
||
try:
|
||
report.step_start("Verify if Wifi is Connected - 2")
|
||
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='" + wifi_name + "']")))
|
||
ssid_with_internet = True
|
||
print("Wifi Successfully Connected")
|
||
logging.info("Wifi Successfully Connected")
|
||
except NoSuchElementException:
|
||
print("Wifi Connection Error: " + wifi_name)
|
||
logging.error("Wifi Connection Error")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
else:
|
||
try:
|
||
report.step_start(
|
||
"Verifying wifi connection status connected/connected without internet")
|
||
self.check_if_no_internet_popup(driver)
|
||
self.check_if_no_internet_popup(driver)
|
||
|
||
wifi_connection_name = WebDriverWait(driver, 50).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH,
|
||
"//*[@resource-id='com.android.settings"
|
||
":id/connected_list']/android.widget.LinearLayout[1]"
|
||
"/android.widget.LinearLayout[1]/android.widget."
|
||
"LinearLayout[1]/android.widget.RelativeLayout[2]/"
|
||
"android.widget.TextView[1]"
|
||
)))
|
||
if wifi_connection_name.text == wifi_name:
|
||
wifi_connection_status = WebDriverWait(driver, 50).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH,
|
||
"//*[@resource-id='com.android.settings:id/summary']"
|
||
)))
|
||
if wifi_connection_status.text == "Connected":
|
||
ssid_with_internet = True
|
||
print("Connected with internet")
|
||
logging.info("Connected with internet")
|
||
|
||
else:
|
||
ssid_with_internet = False
|
||
print("Wifi Successfully Connected without internet")
|
||
logging.info("Wifi Successfully Connected without internet")
|
||
self.check_if_no_internet_popup(driver)
|
||
# Go into additional details here
|
||
else:
|
||
# Connected to some other wifi, makes sense to close app and fail this testcase
|
||
logging.error("Connected to some other wifi")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
except:
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
|
||
# ---------------------To Turn on WIFi Switch if already OFF-------------------------------
|
||
|
||
except:
|
||
print("Couldn't find wifi Button")
|
||
logging.error("Couldn't find wifi Button")
|
||
# ------------------Open WIFI page----------------------------------
|
||
|
||
except:
|
||
print("Exception: Verify Xpath - Update/check Xpath for Click Connections")
|
||
logging.error("Exception: Verify Xpath - Update/check Xpath for Click Connections")
|
||
# -----------------To Open Connections page---------------------------
|
||
# --------------------Pixel 4 code---------------------------
|
||
else:
|
||
report.step_start("Set Wifi Network to " + wifi_name)
|
||
|
||
# -----------------To Open Connections page-----------------------
|
||
try:
|
||
print("Verifying Connected Wifi Connection")
|
||
report.step_start("Click Network & internet in pixel4")
|
||
conn_element = driver.find_element_by_xpath("//*[@text='Network & internet']")
|
||
conn_element.click()
|
||
# ---------------------Open WIFI page-------------------------------
|
||
try:
|
||
report.step_start("Clicking Wi-Fi")
|
||
print("Clicking WIFI")
|
||
time.sleep(3)
|
||
wifi_element = WebDriverWait(driver, 10).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='Wi‑Fi']")))
|
||
wifi_element.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_widget']")
|
||
get_switch_text = get_switch_text_element.text
|
||
# if get_switch_text is not None:
|
||
# switch_text = "OFF"
|
||
# else:
|
||
# switch_text = "ON"
|
||
switch_text = get_switch_text
|
||
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
|
||
self.scrollDown(setup_perfectoMobile)
|
||
print("Sleeping for: ", i)
|
||
time.sleep(i)
|
||
pass
|
||
if switch_text == "OFF":
|
||
print("Switch is Still OFF")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
else:
|
||
print("Switch is already On")
|
||
self.check_if_no_internet_popup(driver)
|
||
except:
|
||
print("Couldn't turn on WIFI switch")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
|
||
# ---------------------This is to Forget current connected SSID-------------------------------
|
||
try: # To deal with already connected SSID
|
||
self.check_if_no_internet_popup(driver)
|
||
network_category = driver.find_element_by_xpath("//*[@text='Connected']")
|
||
try: # To forget existing ssid
|
||
print("To forget ssid")
|
||
self.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:
|
||
self.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")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
except:
|
||
print("No Connected SSIDS")
|
||
# ----------------------This is to Forget current connected SSID--------------------------------
|
||
|
||
time.sleep(2)
|
||
print("Selecting Wifi: " + wifi_name)
|
||
# allure.attach(name= body=str("Selecting Wifi: " + wifi_name))
|
||
ssid_found = False
|
||
available_ssids = False
|
||
# This is To get all available ssids
|
||
# ------------------------------------------------------
|
||
try:
|
||
for k in range(5):
|
||
available_ssids = self.get_all_available_ssids(driver, device_model_name)
|
||
print("active_ssid_list: ", available_ssids)
|
||
allure.attach(name="Available SSIDs in device: ", body=str(available_ssids))
|
||
try:
|
||
if wifi_name not in available_ssids:
|
||
self.scrollDown(setup_perfectoMobile)
|
||
time.sleep(2)
|
||
else:
|
||
ssid_found = True
|
||
print(wifi_name + " : Found in Device")
|
||
# allure.attach(name= body=str(wifi_name+" : Found in Device"))
|
||
break
|
||
except:
|
||
print("couldn't find wifi in available ssid")
|
||
if not ssid_found:
|
||
ssid_not_found = False
|
||
for k in range(5):
|
||
available_ssids = self.get_all_available_ssids(driver, device_model_name)
|
||
print("active_ssid_list: ", available_ssids)
|
||
allure.attach(name="Available SSIDs in device: ", body=str(available_ssids))
|
||
try:
|
||
if wifi_name not in available_ssids:
|
||
self.scroll_up(driver)
|
||
time.sleep(2)
|
||
else:
|
||
ssid_not_found = True
|
||
print(wifi_name + " : Found in Device")
|
||
# allure.attach(name= body=str(wifi_name+" : Found in Device"))
|
||
break
|
||
except:
|
||
print("couldn't find wifi in available ssid")
|
||
if not ssid_not_found:
|
||
print("could not found " + wifi_name + " in device")
|
||
# allure.attach(name= body=str("could not found" + wifi_name + " in device"))
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
except:
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
# -------------------------------------------------------
|
||
|
||
# Selecting WIFI
|
||
# -------------------------------------------------------
|
||
try:
|
||
report.step_start("Selecting Wifi: " + wifi_name)
|
||
wifi_selection_element = WebDriverWait(driver, 35).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='" + wifi_name + "']")))
|
||
wifi_selection_element.click()
|
||
self.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))
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
# -------------------------------------------------------
|
||
# Selecting certificate
|
||
# -------------------------------------------------------
|
||
try:
|
||
driver.implicitly_wait(3)
|
||
report.step_start("Selecting CA Cert")
|
||
print("Selecting certificate")
|
||
logging.info("Selecting certificate")
|
||
cert_element = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/ca_cert']")
|
||
cert_element.click()
|
||
except NoSuchElementException:
|
||
print("Selecting certificate failed")
|
||
logging.error("Selecting certificate failed")
|
||
# -------------------------------------------------------
|
||
# Validating certificate
|
||
# -------------------------------------------------------
|
||
try:
|
||
driver.implicitly_wait(3)
|
||
report.step_start("Validting CA Cert")
|
||
print("validation")
|
||
logging.info("validation")
|
||
cert_element = driver.find_element_by_xpath(
|
||
"//*[@text='Do not validate']")
|
||
cert_element.click()
|
||
except NoSuchElementException:
|
||
print("validation failed")
|
||
logging.error("validation failed")
|
||
# Set username
|
||
# -------------------------------------------------------
|
||
try:
|
||
driver.implicitly_wait(3)
|
||
report.step_start("Set User name")
|
||
print("Set User name")
|
||
logging.info("Set User name")
|
||
wifi_user_element = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/identity']")
|
||
wifi_user_element.send_keys(user)
|
||
except NoSuchElementException:
|
||
print("User name not Loaded")
|
||
logging.error("User name not Loaded")
|
||
# -------------------------------------------------------
|
||
# Scroll Down
|
||
self.scroll_down_pixel(setup_perfectoMobile)
|
||
time.sleep(2)
|
||
# Set Password
|
||
# -------------------------------------------------------
|
||
try:
|
||
self.check_if_no_internet_popup(driver)
|
||
report.step_start("Set Wifi Password")
|
||
print("Entering password")
|
||
logging.info("Entering password")
|
||
wifi_password_element = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/password']")
|
||
wifi_password_element.send_keys(ttls_passwd)
|
||
except NoSuchElementException:
|
||
print("Password Page Not Loaded, password May be cached in the System")
|
||
logging.error("Password Page Not Loaded, password May be cached in the System")
|
||
self.check_if_no_internet_popup(driver)
|
||
|
||
# -------------------------------------------------------
|
||
|
||
# Click on connect button
|
||
# -------------------------------------------------------
|
||
try:
|
||
driver.implicitly_wait(3)
|
||
report.step_start("Click Connect Button")
|
||
print("Click Connect Button")
|
||
logging.info("Click Connect Button")
|
||
join_element = driver.find_element_by_xpath("//*[@text='Connect']")
|
||
join_element.click()
|
||
except NoSuchElementException:
|
||
print("Connect Button Not Enabled...Verify if Password is set properly ")
|
||
logging.error("Connect Button Not Enabled...Verify if Password is set properly ")
|
||
self.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='" + wifi_name + "']")))
|
||
ssid_with_internet = True
|
||
print("Wifi Successfully Connected")
|
||
# time.sleep(5)
|
||
self.check_if_no_internet_popup(driver)
|
||
except:
|
||
try:
|
||
print("Not able to verify the connected WiFi. Scrolling up.")
|
||
self.scroll_up(driver)
|
||
self.scroll_up(driver)
|
||
# self.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='" + wifi_name + "']")))
|
||
print("Wifi Successfully Connected without internet")
|
||
self.check_if_no_internet_popup(driver)
|
||
except:
|
||
try:
|
||
report.step_start("Verify if Wifi is Connected")
|
||
print("Verifying after scrolling")
|
||
self.scroll_up(driver)
|
||
WifiInternetErrMsg = WebDriverWait(driver, 60).until(
|
||
EC.presence_of_element_located((
|
||
MobileBy.XPATH,
|
||
"//*[@resource-id='android:id/summary' and @text='Connected']/parent::*/android.widget.TextView[@text='" + wifi_name + "']")))
|
||
ssid_with_internet = True
|
||
print("Wifi Successfully Connected")
|
||
except NoSuchElementException:
|
||
print("Wifi Connection Error: " + wifi_name)
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
# -------------------------------------------------------
|
||
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---------------------------
|
||
|
||
# self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet, setup_perfectoMobile, ssid_found
|
||
def run_speed_test(self, setup_perfectoMobile, connData):
|
||
print("\n-------------------------------------")
|
||
print("Verify Upload & Download Speed")
|
||
print("-------------------------------------")
|
||
|
||
report = setup_perfectoMobile[1]
|
||
driver = setup_perfectoMobile[0]
|
||
connData = connData
|
||
|
||
currentResult = False
|
||
|
||
driver.switch_to.context('WEBVIEW_1')
|
||
|
||
try:
|
||
print("Launching Chrome")
|
||
report.step_start("Google Home Page")
|
||
logging.info("Launching Chrome")
|
||
driver.get(connData["webURL"])
|
||
print("Enter Search Text")
|
||
logging.info("Entering Internet speed test search")
|
||
elementFindTxt = driver.find_element_by_xpath(connData["lblSearch"])
|
||
elementFindTxt.send_keys("Internet Speed Test")
|
||
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()
|
||
print("Keyboard enter")
|
||
driver.press_keycode(66)
|
||
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)
|
||
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....")
|
||
except Exception as e:
|
||
print("Launching Chrome Failed")
|
||
logging.error("Launching Chrome 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))
|
||
return currentResult
|
||
|
||
def connect_captive_portal(self, ssid, setup_perfectoMobile, connData):
|
||
report = setup_perfectoMobile[1]
|
||
driver = setup_perfectoMobile[0]
|
||
device_model_name = self.getDeviceModelName(setup_perfectoMobile)
|
||
print("Selected Device Model: " + device_model_name)
|
||
wifi_name = ssid
|
||
ssid_with_internet = False
|
||
if device_model_name != "Pixel 4":
|
||
# ---------------------Clicking on ssid for captive portal login--------
|
||
try:
|
||
time.sleep(2)
|
||
report.step_start("Selecting Wifi: " + wifi_name)
|
||
wifi_selection_element = WebDriverWait(driver, 35).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='" + wifi_name + "']")))
|
||
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
|
||
# -------------------------------------------------------
|
||
if self.get_phone_information(setup_perfectoMobile=setup_perfectoMobile,
|
||
search_this="osVersion") != "12":
|
||
try:
|
||
report.step_start("Verify if Wifi is Connected")
|
||
wifi_internet_err_msg = WebDriverWait(driver, 35).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH,
|
||
"//*[@resource-id='android:id/summary' and @text='Connected']/"
|
||
"parent::*/android.widget.TextView[@text='" + wifi_name + "']")))
|
||
ssid_with_internet = True
|
||
print("Wifi Successfully Connected")
|
||
# time.sleep(5)
|
||
self.check_if_no_internet_popup(driver)
|
||
except:
|
||
try:
|
||
self.check_if_no_internet_popup(driver)
|
||
wifi_internet_err_msg = 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='"
|
||
+ wifi_name + "']")))
|
||
print("Wifi Successfully Connected without internet")
|
||
self.check_if_no_internet_popup(driver)
|
||
except:
|
||
try:
|
||
report.step_start("Verify if Wifi is Connected - 2")
|
||
wifi_internet_err_msg = 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='" + wifi_name + "']")))
|
||
ssid_with_internet = True
|
||
print("Wifi Successfully Connected")
|
||
except NoSuchElementException:
|
||
print("Wifi Connection Error: " + wifi_name)
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet
|
||
else:
|
||
try:
|
||
report.step_start(
|
||
"Verifying wifi connection status connected/connected without internet")
|
||
self.check_if_no_internet_popup(driver)
|
||
self.check_if_no_internet_popup(driver)
|
||
|
||
wifi_connection_name = WebDriverWait(driver, 50).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH,
|
||
"//*[@resource-id='com.android.settings:id/connected_list']/"
|
||
"android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/"
|
||
"android.widget.LinearLayout[1]/android.widget.RelativeLayout[2]"
|
||
"/android.widget.TextView[1]")))
|
||
if wifi_connection_name.text == wifi_name:
|
||
wifi_connection_status = WebDriverWait(driver, 50).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH,
|
||
"//*[@resource-id='com.android.settings:id/summary']"
|
||
)))
|
||
if wifi_connection_status.text == "Connected":
|
||
ssid_with_internet = True
|
||
print("Connected with internet")
|
||
|
||
else:
|
||
ssid_with_internet = False
|
||
print("Wifi Successfully Connected without internet")
|
||
self.check_if_no_internet_popup(driver)
|
||
# Go into additional details here
|
||
else:
|
||
# Connected to some other wifi, makes sense to close app and fail this testcase
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet
|
||
except:
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet
|
||
else:
|
||
try:
|
||
report.step_start("Selecting Wifi: " + wifi_name)
|
||
wifiSelectionElement = WebDriverWait(driver, 35).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='" + wifi_name + "']")))
|
||
wifiSelectionElement.click()
|
||
self.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(20)
|
||
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")
|
||
wifi_internet_err_msg = WebDriverWait(driver, 35).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH,
|
||
"//*[@resource-id='android:id/summary' and @text='Connected']/"
|
||
"parent::*/android.widget.TextView[@text='" + wifi_name + "']")))
|
||
ssid_with_internet = True
|
||
print("Wifi Successfully Connected")
|
||
# time.sleep(5)
|
||
self.check_if_no_internet_popup(driver)
|
||
except:
|
||
try:
|
||
print("Not able to verify the connected WiFi. Scrolling up.")
|
||
self.scroll_up(setup_perfectoMobile)
|
||
self.scroll_up(setup_perfectoMobile)
|
||
# self.check_if_no_internet_popup(driver)
|
||
wifi_internet_err_msg = 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='" + wifi_name + "']")))
|
||
print("Wifi Successfully Connected without internet")
|
||
self.check_if_no_internet_popup(driver)
|
||
except:
|
||
try:
|
||
report.step_start("Verify if Wifi is Connected")
|
||
print("Verifying after scrolling")
|
||
self.scroll_up(setup_perfectoMobile)
|
||
wifi_internet_err_msg = WebDriverWait(driver, 60).until(
|
||
EC.presence_of_element_located((
|
||
MobileBy.XPATH,
|
||
"//*[@resource-id='android:id/summary' and @text='Connected']/parent::*/"
|
||
"android.widget.TextView[@text='" + wifi_name + "']")))
|
||
ssid_with_internet = True
|
||
print("Wifi Successfully Connected")
|
||
except NoSuchElementException:
|
||
print("Wifi Connection Error: " + wifi_name)
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
return ssid_with_internet
|
||
|
||
def toggle_wifi_mode(self, ssid, setup_perfectoMobile, connData):
|
||
print("\n-----------------------")
|
||
print("Toggle Wifi Mode")
|
||
print("-----------------------")
|
||
report = setup_perfectoMobile[1]
|
||
driver = setup_perfectoMobile[0]
|
||
|
||
device_model_name = self.getDeviceModelName(setup_perfectoMobile)
|
||
print("Selected Device Model: " + device_model_name)
|
||
|
||
if device_model_name != "Pixel 4":
|
||
report.step_start("Set Wifi Network to " + ssid)
|
||
|
||
try: # Disabling wifi-toggle button
|
||
time.sleep(10)
|
||
print("Disable Wifi Radio Button")
|
||
report.step_start("Disable Wifi Radio Button")
|
||
wifiRadioBTN_On = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/switch_widget']")
|
||
driver.implicitly_wait(2)
|
||
wifiRadioBTN_On.click()
|
||
time.sleep(5)
|
||
except NoSuchElementException:
|
||
print("Exception: Verify Xpath - Update/check Xpath for Wifi Radio Button")
|
||
|
||
try: # Enabling wifi-toggle button
|
||
print("Enable Wifi Radio Button")
|
||
report.step_start("Enable Wifi Radio Button")
|
||
wifiRadioBTN_Off = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/switch_widget']")
|
||
driver.implicitly_wait(2)
|
||
wifiRadioBTN_Off.click()
|
||
time.sleep(2)
|
||
except NoSuchElementException:
|
||
print("Exception: Verify Xpath - Update/check Xpath for Wifi Radio Button")
|
||
|
||
try: # Checking whether connected to same ssid, after toggling wifi-button
|
||
if device_model_name == "Galaxy S9":
|
||
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")
|
||
WifiNameElement1 = WebDriverWait(driver, 35).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH,
|
||
"//hierarchy/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.view.ViewGroup[1]/android.widget.LinearLayout[2]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.view.ViewGroup[1]/android.widget.ScrollView[1]/android.widget.LinearLayout[1]/android.view.ViewGroup[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.RelativeLayout[2]/android.widget.TextView[1]")))
|
||
Wifi_SSID_Name = WifiNameElement1.text
|
||
print("Current Wifi Status Name: " + Wifi_SSID_Name)
|
||
else:
|
||
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")
|
||
WifiNameElement1 = WebDriverWait(driver, 35).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH,
|
||
"//hierarchy/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.view.ViewGroup[1]/android.widget.LinearLayout[3]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.view.ViewGroup[1]/android.widget.ScrollView[1]/android.widget.LinearLayout[1]/androidx.recyclerview.widget.RecyclerView[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.RelativeLayout[2]/android.widget.TextView[1]")))
|
||
Wifi_SSID_Name = WifiNameElement1.text
|
||
print("Current Wifi Status Name: " + Wifi_SSID_Name)
|
||
|
||
except NoSuchElementException:
|
||
Wifi_SSID_Name = "Null"
|
||
print("Device did not connect back to Wifi: " + ssid)
|
||
|
||
if Wifi_SSID_Name.__eq__(ssid):
|
||
WifiFlag = True
|
||
else:
|
||
WifiFlag = False
|
||
|
||
return WifiFlag
|
||
|
||
else:#------------------For Pixel4 ------------------------
|
||
try: # Disabling wifi-toggle button
|
||
time.sleep(2)
|
||
print("--Disable Wifi Radio Button")
|
||
report.step_start("Disable Wifi Radio Button")
|
||
wifiRadioBTN_On = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/switch_widget']")
|
||
driver.implicitly_wait(2)
|
||
wifiRadioBTN_On.click()
|
||
time.sleep(5)
|
||
except NoSuchElementException:
|
||
print("Exception: Verify Xpath - Update/check Xpath for Wifi Radio Button")
|
||
|
||
try: # Enabling wifi-toggle button
|
||
print("--Enable Wifi Radio Button")
|
||
report.step_start("Enable Wifi Radio Button")
|
||
wifiRadioBTN_Off = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/switch_widget']")
|
||
driver.implicitly_wait(2)
|
||
wifiRadioBTN_Off.click()
|
||
time.sleep(10)
|
||
except NoSuchElementException:
|
||
print("Exception: Verify Xpath - Update/check Xpath for Wifi Radio Button")
|
||
|
||
try: # Checking whether connected to same ssid, after toggling wifi-button
|
||
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")
|
||
WifiNameElement2 = WebDriverWait(driver, 35).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH,
|
||
"//hierarchy/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[2]/androidx.recyclerview.widget.RecyclerView[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.RelativeLayout[1]/android.widget.TextView[1]")))
|
||
Wifi_SSID_Name = WifiNameElement2.text
|
||
print("Current Wifi Status Name: " + Wifi_SSID_Name)
|
||
except NoSuchElementException:
|
||
Wifi_SSID_Name = "Null"
|
||
print("Device did not connect back to Wifi: " + ssid)
|
||
|
||
if Wifi_SSID_Name.__eq__(ssid):
|
||
WifiFlag = True
|
||
else:
|
||
WifiFlag = False
|
||
|
||
return WifiFlag
|
||
|
||
def toggle_airplane_mode(self, ssid, 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)
|
||
|
||
deviceModelName = self.getDeviceModelName(setup_perfectoMobile)
|
||
print("Selected Device Model: " + deviceModelName)
|
||
|
||
airplaneFlag = False
|
||
|
||
if deviceModelName != "Pixel 4":
|
||
try:
|
||
print("Clicking Connections")
|
||
report.step_start("Clicking Connections")
|
||
conn_element = driver.find_element_by_xpath('//*[@content-desc="Navigate up"]')
|
||
conn_element.click()
|
||
except:
|
||
print("Exception: Verify Xpath - Update/check Xpath for Connections")
|
||
if self.get_phone_information(setup_perfectoMobile,
|
||
search_this="osVersion") != "12":
|
||
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
|
||
|
||
report.step_start("Toggle Airplane Mode to Off")
|
||
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")
|
||
try:
|
||
print("Clicking Wi-Fi")
|
||
report.step_start("Clicking Wi-Fi")
|
||
time.sleep(3)
|
||
connElement = driver.find_element_by_xpath('//*[@text="Wi-Fi"]')
|
||
connElement.click()
|
||
except NoSuchElementException:
|
||
print("Exception: Verify Xpath - Update/check Xpath for Wi-Fi")
|
||
logging.info("Selected Model is not Pixel 4")
|
||
# Get into Additional Details
|
||
# To Get an IP Address
|
||
# -------------------------------------------------------
|
||
try:
|
||
print("Into additional details")
|
||
logging.info("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()
|
||
# --------------------Added for ssid Name check--------------------------
|
||
try:
|
||
time.sleep(2)
|
||
ssid_name_element = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/entity_header_title']")
|
||
ssid_name_element_text = ssid_name_element.text
|
||
print("Ssid Name is :", ssid_name_element_text)
|
||
allure.attach(name="Ssid connected:", body=str(ssid_name_element_text))
|
||
except:
|
||
print("Ssid name not available")
|
||
logging.error("Ssid name not available")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
assert False
|
||
except:
|
||
print("Couldn't get into Additional settings")
|
||
logging.error("Couldn't get into Additional settings")
|
||
# -------------------------------------------------------
|
||
else:
|
||
try:
|
||
print("Clicking Airplane mode")
|
||
report.step_start("Clicking Airplane Mode")
|
||
conn_element = driver.find_element_by_xpath('//*[@text="Airplane mode"]')
|
||
conn_element.click()
|
||
except:
|
||
print("Exception: Verify Xpath - Update/check Xpath for Airplane Mode")
|
||
try:
|
||
report.step_start("Toggle Airplane Mode to On")
|
||
print("Toggle Airplane Mode to On")
|
||
ToggleAirplanEle = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/switch_widget' and @text='Off']")
|
||
ToggleAirplanEle.click()
|
||
airplaneFlag = True
|
||
|
||
report.step_start("Toggle Airplane Mode to Off")
|
||
print("Toggle Airplane Mode to Off")
|
||
ToggleAirplanEle2 = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/switch_widget' 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(
|
||
"//*[@resource-id='com.android.settings:id/switch_widget' 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")
|
||
try:
|
||
print("Clicking Connections")
|
||
report.step_start("Clicking Connections")
|
||
conn_element = driver.find_element_by_xpath('//*[@content-desc="Navigate up"]')
|
||
conn_element.click()
|
||
except:
|
||
print("Exception: Verify Xpath - Update/check Xpath for Connections")
|
||
try:
|
||
print("Clicking Wi-Fi")
|
||
report.step_start("Clicking Wi-Fi")
|
||
time.sleep(3)
|
||
connElement = driver.find_element_by_xpath('//*[@text="Wi-Fi"]')
|
||
connElement.click()
|
||
except NoSuchElementException:
|
||
print("Exception: Verify Xpath - Update/check Xpath for Wi-Fi")
|
||
logging.info("Selected Model is not Pixel 4")
|
||
# Get into Additional Details
|
||
# To Get an IP Address
|
||
# -------------------------------------------------------
|
||
try:
|
||
report.step_start("additional_details")
|
||
print("Into additional details")
|
||
logging.info("Into additional details")
|
||
time.sleep(2)
|
||
additional_details_element = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/wifi_details']")
|
||
additional_details_element.click()
|
||
|
||
try:
|
||
print("click on view more")
|
||
logging.info("click on view more")
|
||
additional_details_element = WebDriverWait(driver, 50).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='View more']")))
|
||
additional_details_element.click()
|
||
except:
|
||
pass
|
||
|
||
try:
|
||
time.sleep(2)
|
||
ssid_name_element = driver.find_element_by_xpath(
|
||
"//*[@resource-id='com.android.settings:id/entity_header_title']")
|
||
ssid_name_element_text = ssid_name_element.text
|
||
print("Ssid Name is :", ssid_name_element_text)
|
||
allure.attach(name="Ssid connected:", body=str(ssid_name_element_text))
|
||
except:
|
||
print("Ssid name not available")
|
||
logging.error("Ssid name not available")
|
||
pass
|
||
except:
|
||
print("Couldn't get into Additional settings")
|
||
logging.error("Couldn't get into Additional settings")
|
||
|
||
if ssid.__eq__(ssid_name_element_text):
|
||
return True
|
||
else:
|
||
return False
|
||
|
||
# ----------------Pixel 4 code------------
|
||
else:
|
||
try:
|
||
print("Clicking Network & Internet")
|
||
report.step_start("Clicking Network & Internet")
|
||
conn_element = driver.find_element_by_xpath('//*[@content-desc="Navigate up"]')
|
||
conn_element.click()
|
||
except:
|
||
print("Exception: Verify Xpath - Update/check Xpath for Network & Internet")
|
||
try:
|
||
report.step_start("Toggle Airplane Mode to On")
|
||
print("Toggle Airplane Mode to On")
|
||
ToggleAirplanEle = driver.find_element_by_xpath(
|
||
'//*[@resource-id="android:id/switch_widget" and @text="OFF"]')
|
||
ToggleAirplanEle.click()
|
||
airplaneFlag = True
|
||
|
||
report.step_start("Toggle Airplane Mode to Off")
|
||
print("Toggle Airplane Mode to Off")
|
||
ToggleAirplanEle2 = driver.find_element_by_xpath(
|
||
'//*[@resource-id="android:id/switch_widget" 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(
|
||
'//*[@resource-id="android:id/switch_widget" 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")
|
||
try:
|
||
report.step_start("Clicking Wi-Fi")
|
||
print("Clicking WIFI")
|
||
time.sleep(3)
|
||
wifi_element = WebDriverWait(driver, 10).until(
|
||
EC.presence_of_element_located((MobileBy.XPATH, "//*[@text='Wi‑Fi']")))
|
||
wifi_element.click()
|
||
except:
|
||
print("Couldn't find wifi Button")
|
||
try:
|
||
print("Into additional details")
|
||
time.sleep(5)
|
||
report.step_start("Into additional details")
|
||
additional_details_element = driver.find_element_by_xpath(
|
||
'//*[@resource-id="android:id/widget_frame"]')
|
||
additional_details_element.click()
|
||
print("Entered ssid")
|
||
try:
|
||
try:
|
||
time.sleep(2)
|
||
ssid_name_element = driver.find_element_by_xpath(
|
||
'//*[@resource-id="com.android.settings:id/entity_header_title"]')
|
||
ssid_name_element_text = ssid_name_element.text
|
||
print("Ssid Name is :", ssid_name_element_text)
|
||
allure.attach(name="Ssid connected:", body=str(ssid_name_element_text))
|
||
except:
|
||
print("Ssid name not available")
|
||
logging.error("Ssid name not available")
|
||
self.closeApp(connData["appPackage-android"], setup_perfectoMobile)
|
||
assert False
|
||
except:
|
||
print("No advanced options")
|
||
except:
|
||
print("Couldn't get into Additional settings")
|
||
|
||
if ssid.__eq__(ssid_name_element_text):
|
||
return True
|
||
else:
|
||
return False
|
||
|
||
if __name__ == '__main__':
|
||
perfecto_data = {
|
||
"securityToken": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICI3NzkzZGM0Ni1jZmU4LTQ4ODMtYjhiOS02ZWFlZGU2OTc2MDkifQ.eyJpYXQiOjE2MzI4Mzc2NDEsImp0aSI6IjAwZGRiYWY5LWQwYjMtNDRjNS1hYjVlLTkyNzFlNzc5ZGUzNiIsImlzcyI6Imh0dHBzOi8vYXV0aDIucGVyZmVjdG9tb2JpbGUuY29tL2F1dGgvcmVhbG1zL3RpcC1wZXJmZWN0b21vYmlsZS1jb20iLCJhdWQiOiJodHRwczovL2F1dGgyLnBlcmZlY3RvbW9iaWxlLmNvbS9hdXRoL3JlYWxtcy90aXAtcGVyZmVjdG9tb2JpbGUtY29tIiwic3ViIjoiODNkNjUxMWQtNTBmZS00ZWM5LThkNzAtYTA0ZjBkNTdiZDUyIiwidHlwIjoiT2ZmbGluZSIsImF6cCI6Im9mZmxpbmUtdG9rZW4tZ2VuZXJhdG9yIiwibm9uY2UiOiI2ZjE1YzYxNy01YTU5LTQyOWEtODc2Yi1jOTQxMTQ1ZDFkZTIiLCJzZXNzaW9uX3N0YXRlIjoiYmRjZTFmYTMtMjlkYi00MmFmLWI5YWMtYjZjZmJkMDEyOTFhIiwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBvZmZsaW5lX2FjY2VzcyBlbWFpbCJ9.5R85_1R38ZFXv_wIjjCIsj8NJm1p66dCsLJI5DBEmks",
|
||
"projectName": "TIP-PyTest-Execution",
|
||
"projectVersion": "1.0",
|
||
"reportTags": "TestTag",
|
||
"perfectoURL": "tip",
|
||
"Galaxy S20": {
|
||
"platformName-android": "Android",
|
||
"model-android": "Galaxy S20",
|
||
"appPackage-android": "com.android.settings",
|
||
"bundleId-iOS-Settings": "com.apple.Preferences",
|
||
"bundleId-iOS-Safari": "com.apple.mobilesafari",
|
||
"jobName": "Interop-Galaxy-S20",
|
||
"jobNumber": 38
|
||
}
|
||
}
|
||
access_point = [{
|
||
"model": "edgecore_eap101",
|
||
"supported_bands": ["2G", "5G"],
|
||
"upstream_port": "1.1.eth1",
|
||
"supported_modes": ["BRIDGE", "NAT", "VLAN"],
|
||
"ssid": {
|
||
"2g-ssid": "OpenWifi",
|
||
"5g-ssid": "OpenWifi",
|
||
"6g-ssid": "candela6ghz",
|
||
"2g-password": "OpenWifi",
|
||
"5g-password": "OpenWifi",
|
||
"6g-password": "hello123",
|
||
"2g-encryption": "WPA2",
|
||
"5g-encryption": "open",
|
||
"6g-encryption": "WPA3",
|
||
"2g-bssid": "68:7d:b4:5f:5c:31 ",
|
||
"5g-bssid": "68:7d:b4:5f:5c:3c",
|
||
"6g-bssid": "68:7d:b4:5f:5c:38"
|
||
},
|
||
"mode": "wifi6",
|
||
"identifier": "903cb36ae255",
|
||
"serial_port": True,
|
||
"host_ip": "10.28.3.102",
|
||
"host_username": "lanforge",
|
||
"host_password": "pumpkin77",
|
||
"host_ssh_port": 22,
|
||
"serial_tty": "/dev/ttyAP5",
|
||
"firmware_version": "next-latest"
|
||
}]
|
||
obj = android_libs() |