Files
wlan-testing/libs/perfecto_interop/ios_libs.py
jitendracandela bd97a51bf7 Wifi 1321 create a lan forge pip module (#745)
* Added rate-limiting in both android_test and ios_test

* Removed ow_sanity_lf marker

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added ow_sanity_lf marker

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Removed ow_sanity_lf marker

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Removed ow_sanity_lf marker

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added ow_sanity_lf marker

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added missing methods

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Modified as per new framework

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added ow_sanity_lf marker for channel 11

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added rate-limiting test_cases

* added ow_sanity_lf marker to multipsk & multivlan tests

* Added allure_testcase-links for client_connect in validation_of_operating_modes(bridge,nat,vlan)

* Added ow_sanity_lf marker

* Removed unwanted  ow_sanity_lf marker

* allure suite and titles changed for mpsk & mvlan tests

Signed-off-by: anil-tegala <anil.tegala@candelatech.com>

* Added rate_limiting test_cases with jira links in validation_of_operating_mode(bridge,nat,vlan)

* Added rate_radius_info and rate_radius_accounting_info

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Modified code for two test cases as per new infra

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Addded radius_auth_data radius_acc_data

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added radius_auth_data and radius_acc_data for rate limiting with radius test cases

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added basic-07

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Converted num station in int

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Removed unnecessary interop testbed details from lab_info

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added Enterprise cleint connect and client connectivity tests in Android

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added Enterprise cleint connect and client connectivity tests in iOS

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added new sanity marker for Interop testcases

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added Enterprise mode client connect test cases in Interop

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added random string addition in Interop testcases for setup profiles ssids

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added random string addition in Interop testcases for setup profiles ssids

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* changed WAN upstream port for interop testbeds

* Added the logic for retest the ucentral connectivity if it is disconnected

Signed-off-by: shivam <shivam.thakur@candelatech.com>

* Added NAT-WAN

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* gw - get commands api fix

* Removed sanity marker on vlan testcases

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* FIxed issue in DFS

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Changed allure report name for Enterprise mode

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added Pytest exit in case of error when testbed data is not available

Signed-off-by: shivam <shivam.thakur@candelatech.com>

* Fixed the string concat from previous commit

Signed-off-by: shivam <shivam.thakur@candelatech.com>

* Added check_connectivity fixture on every client_connectivity and dfs test  case

Signed-off-by: shivam <shivam.thakur@candelatech.com>

* Made some bug fixes on testcases

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Changed profile data in testcases to match setup params

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added new fix in manual pytest execution workflow as per master

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added new fix in sanity workflow as per master

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Changed ssid names in setup params of general test cases

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added Enterprise mode library support for wifi connect

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Removed Interop sanity marker from test connectivity file

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* commented newly added methods for test connectivity

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* commented traffic_generator_connectivity

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* changed as new infra

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Removed interop_uc_sanity

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Removed marker description

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added needed step for S20,S10 for forget ssid

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Fixed the ap libs command for ucentral restart

Signed-off-by: shivam <shivam.thakur@candelatech.com>

* Added test controller connectivity

Signed-off-by: shivam <shivam.thakur@candelatech.com>

* Changed markers as per pytest.ini

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Refractored dvlan

Signed-off-by: karthikaeyetea <karthika.subramani@candelatech.com>

* Added eth table and max station table in allure for test_traffic_generator_connectivity

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* changed scope of Interop testcase name fixture

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added the fix for rate limiting test with vlans. Added Access Point connectivity Tests

Signed-off-by: shivam <shivam.thakur@candelatech.com>

* Changed scope of get test lib fixture

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Changed markers

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added run-lf condition in check_connectivity

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added test case in the library function of setup_perfecto mobile data

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Removed interop testcase name fixture

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added new fail msg for Interop tests for better debugging

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added fix for testcase name in setup perfecto data

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added check_connectivity

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added ow_sanity_lf marker

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Refractored DVLAN

Signed-off-by: karthikaeyetea <karthika.subramani@candelatech.com>

* Added lab_info.json back due to unexpected deletion

Signed-off-by: karthikaeyetea <karthika.subramani@candelatech.com>

* Added skip-all work with all test cases and removed the broken test cases

Signed-off-by: shivam <shivam.thakur@candelatech.com>

* Renoved the unwanted print for getting marker

Signed-off-by: shivam <shivam.thakur@candelatech.com>

* Provided vlan id in list

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added proper feature and parent suite

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* [WIFI-11228] Add: manual workflow step with details on namespace (#727)

Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>

Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>

* fixed incorrect security parameter in MVLAN test functions

Signed-off-by: anil-tegala <anil.tegala@candelatech.com>

* Added Comments on the Library Functions for Proper Understanding

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added 6G RADIO Config data

Signed-off-by: shivam <shivam.thakur@candelatech.com>

* Removed the sync_repos.bash as it is not needed now

Signed-off-by: shivam <shivam.thakur@candelatech.com>

* Added proper suite, subsuite, parent suite, feature, title

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Changed method name  wifi_capacity to rate_limiting_test

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Refactored dvlan in wpa3_eap

Signed-off-by: karthikaeyetea <karthika.subramani@candelatech.com>

* old mvlan test files removed

Signed-off-by: anil-tegala <anil.tegala@candelatech.com>

* marker name corrections in SDK API tests

Signed-off-by: anil-tegala <anil.tegala@candelatech.com>

* descritpion and marker changes in mvlan tests

Signed-off-by: anil-tegala <anil.tegala@candelatech.com>

* Added suite,sub_suite,parent,feature for IN,RU,SG

Signed-off-by: karthikaeyetea <karthika.subramani@candelatech.com>

* Modified as per new freamework and enhanced allure and changed file name to dynamic qos

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Changed country from CA to US

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added 6g in get_applied_ssid_info method

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Changed manager ip to localhost

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added FMS Tests

Signed-off-by: shivam <shivam.thakur@candelatech.com>

* added basic-08 & advance-01 info for tunneling

Signed-off-by: anil-tegala <anil.tegala@candelatech.com>

* Added improvements around pass and fail for ap connectivity and added basic lab_info format

Signed-off-by: shivam <shivam.thakur@candelatech.com>

* Added proper feature, parent suite, suite, sub_suite and title

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added Toggle-Wifi Button Functionality for both android and ios tests file

Signed-off-by: tarun-candela <tarunkumar.madabathula@candelatech.com>

* Added toggle_wifi_mode test-cases for bridge,nat,vlan modes

Signed-off-by: tarun-candela <tarunkumar.madabathula@candelatech.com>

* Added fix for 2.4g based bssid band data

Signed-off-by: shivam <shivam.thakur@candelatech.com>

* rempved rate_limiting_tests marker

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Refractored channel vs country code

* Corrected setup_basic_configuration

Signed-off-by: karthikaeyetea <karthika.subramani@candelatech.com>

* Added reports dir creation logic

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* vlan id's passed to test functions in mvlan

Signed-off-by: anil-tegala <anil.tegala@candelatech.com>

* removed security_key from open test case

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Fixed scan ssid issue in vlan

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Fixed scan ssid issue and wrong security issue

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* changed vlan id for test_disable_vlan_wpa2_2g test case

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Changed dataplane_throughput_test marker to dataplane_tests

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Changed password for controller

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* updated controller credentials in lab-info & tunnel_bash

Signed-off-by: anil-tegala <anil.tegala@candelatech.com>

* Fixed TypeError: can only concatenate str (not dict) to str issue

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Changed parent_suite from OpenWifi Dynamic Vlan Test to Dynamic Vlan Test

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Fix: resolved Pixel 4 scroll down issue, by modifying scrollDown() in android_libs.py

Signed-off-by: tarun-candela <tarunkumar.madabathula@candelatech.com>

* reverted old password in controller info

Signed-off-by: anil-tegala <anil.tegala@candelatech.com>

* IP validation  issue in DVLAN

Signed-off-by: karthikaeyetea <karthika.subramani@candelatech.com>

* Removed traffic_generator_connectivity test case and Modification for allure enhancement

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Changed parent suite and suite

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Renamed dynamic_qos_tests to rate_limiting_with_radius_tests

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Changed parent suite to Throughput Benchmark Test

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added missing key_mgmt for wp3

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* key_mgmt issue in DVLAN-wpa3e

Signed-off-by: karthikaeyetea <karthika.subramani@candelatech.com>

* Added security markers

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* [WIFI-11619] Upd: Docker instructions update (#739)

Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>

Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>

* DVLAN admin_up issue

Signed-off-by: karthikaeyetea <karthika.subramani@candelatech.com>

* Added pk_passwd and num_stations

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added num_stations

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added num_stations, execution_number and In tls added pk_passwd argument

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added max stations

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added client_scale_tests

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added 6GHz test cases

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added new test channels

Signed-off-by: karthikaeyetea <karthika.subramani@candelatech.com>

* Added execution_number in parametrize

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* added new marker for general security mode testcases in Interop

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Changed one ssid with internet variable logic for Interop android

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added proper feature, parent_suite, suite, sub_suite, title in allure report for client_scale_test and dataplane_throughput_test

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Changed the teardown logic in android tests

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added global devicemodel in teardown function of Android

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added return statement for IP address

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added return statement for IP address

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Changed ip addr of rate limiting radius server to 10.28.3.100

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Changed ingress-rate to 10 and egress-rate to 5

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added pre-cleanup for deleting existing stations

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* [WIFI-11619] Fix: Docker example command

Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>

* Changed RATE LIMITING RADIUS SERVER ip to 10.28.3.100

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added wpa personal and open bridge test cases for client scale test

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added Toggle Airplane Mode

* Added toggle airplane mode test-cases (NAT, VLAN)

Signed-off-by: karthikeyan <karthikeyan.thirumurthy@candelatech.com>

* Added toggle airplane mode functionality in perfecto library

Signed-off-by: karthikeyan <karthikeyan.thirumurthy@candelatech.com>

* Changed teardown func placement in android tests to accomodate perfecto report

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Refactored client-isolation test-cases

Signed-off-by: tarun-candela <tarunkumar.madabathula@candelatech.com>

* refactored multi-station performance test-cases

Signed-off-by: tarun-candela <tarunkumar.madabathula@candelatech.com>

* Added logic to setup_configuration_data() to support for multi-band combinations

Signed-off-by: tarun-candela <tarunkumar.madabathula@candelatech.com>

* allure attachments for client-isolation test_cases

Signed-off-by: tarun-candela <tarunkumar.madabathula@candelatech.com>

* [WIFI-11619] Fix: workflow dependencies

Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>

* [WIFI-11619] Dbg: runtime user

Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>

* [WIFI-11619] Chg: set files permissions

Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>

* [WIFI-11619] Dbg: add step for status

Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>

* Adjusted parameters in rate limiting for perfecto interop

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* [WIFI-11619] Add: git commit the changes

Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>

* [WIFI-11619] Add: git commit the changes

Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>

* [WIFI-11619] Add: git commit the changes

Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>

* [WIFI-11619] Add: git commit the changes

Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>

* [WIFI-11619] Add: git commit the changes

Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>

* [WIFI-11619] Chg: GitHub Pages dir

Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>

* [WIFI-11619] Chg: GitHub Pages dir

Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>

* Added extra parameters in rate limiting test to accomodate lanforge testcases in Perfecto Interop

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* [WIFI-11619] Add: README note

Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>

* Rectified ssid parameter in Perfecto Interop

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Changed ssid to ssid_name in Interop rate limiting testcases

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Removed execution number logic (NAT-LAN logic) for NAT mode ttls test cases

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Refactored multi-asso-disasso

Signed-off-by: karthikaeyetea <karthika.subramani@candelatech.com>

* Revert "Added logic to setup_configuration_data() to support for multi-band combinations"

This reverts commit cef8a23315.

* Added try and except logic in push_config

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Fixed Config sent from Gateway is Received by AP, But not Applied by AP issue and added AP logs during config fails

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Removed resp is None logic

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added Interop sanity marker in connectivity tests

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Updated nat mode & create_vlan parameter for Multi Station Performance test-cases

Signed-off-by: tarun-candela <tarunkumar.madabathula@candelatech.com>

* Added title, suite for multi-asso-disasso

Signed-off-by: karthikaeyetea <karthika.subramani@candelatech.com>

* Added table results for multi-station-performance test-cases

Signed-off-by: tarun-candela <tarunkumar.madabathula@candelatech.com>

* Updated Readme file in wlan-testing

Signed-off-by: shivam <shivam.thakur@candelatech.com>

* Added check_connectivity arg

Signed-off-by: karthikaeyetea <karthika.subramani@candelatech.com>

* Added title,suite for VLAN-multi-asso-disasso

Signed-off-by: karthikaeyetea <karthika.subramani@candelatech.com>

* Refactored rx_sens from rx_sensitivity test to TR-398 Issue 2

Signed-off-by: karthikaeyetea <karthika.subramani@candelatech.com>

* Resolved conflicts in Lab_info.json

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added Open Passpoint required data in Configuration.py

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added Open roaming configuration Fixture

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added Open Roaming support code in Controller libs and tip_2x

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added sample testcase of open roaming for checking

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added Comments in Open roaming testcase

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Modified upload_rate for wifi_capacity

Signed-off-by: tarun-candela <tarunkumar.madabathula@candelatech.com>

* Removed unnecessary Passpoint data

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Removed unnecessary Passpoint data in configuration.py

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Adding new Jira links and Descriptions

Signed-off-by: Rajendra <rajendra.pappu@candelatech.com>

* added passpoint info to tunnel bash

Signed-off-by: anil-tegala <anil.tegala@candelatech.com>

* created 5g tests for rxsens

Signed-off-by: karthikaeyetea <karthika.subramani@candelatech.com>

* Modified multi station performance udp_download test-cases for test result table

Signed-off-by: tarun-candela <tarunkumar.madabathula@candelatech.com>

* Deleted wifi_capacity_test

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added or removed performance marker for performance suite

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Enhanced allure report for sanity

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added sanity test plans and markers

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Removed unnecessary marker

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added Interop Testplan markers in testplan.md file

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Removed emoji's from testplan file

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added emoji's from testplan file

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added some formatting in texts in testplan file

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Removed some formatting in texts in testplan file

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added some formatting in texts in testplan file

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added jira links, description and markers for new sanity testcases

Signed-off-by: anil-tegala <anil.tegala@candelatech.com>

* Added markers and description for some more of sanity suite testcases

Signed-off-by: Jyothsna-setti <jyothsna.polamarasetty@candelatech.com>

* Added test plans md file in readme.md file

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Added test plans md file in readme.md file

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Changed marker expressions in Testplans.md file

Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>

* Removed wrong duplicate parent_suite

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Added test description

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Removed unwanted marker and Added test description

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Removed duplicate function name

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Modified parent suite

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* Modified parent suite and feature name

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

* modified mode of udaya AP from wifi6 to wifi5

Signed-off-by: anil-tegala <anil.tegala@candelatech.com>

* Logging response info for configuration push

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>

Signed-off-by: jitendracandela <jitendra.kushavah@candelatech.com>
Signed-off-by: anil-tegala <anil.tegala@candelatech.com>
Signed-off-by: haricharan-jaka <haricharan.jaka@candelatech.com>
Signed-off-by: shivam <shivam.thakur@candelatech.com>
Signed-off-by: karthikaeyetea <karthika.subramani@candelatech.com>
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
Signed-off-by: tarun-candela <tarunkumar.madabathula@candelatech.com>
Signed-off-by: karthikeyan <karthikeyan.thirumurthy@candelatech.com>
Signed-off-by: Rajendra <rajendra.pappu@candelatech.com>
Signed-off-by: Jyothsna-setti <jyothsna.polamarasetty@candelatech.com>
Co-authored-by: tarun-candela <tarunkumar.madabathula@candelatech.com>
Co-authored-by: anil-tegala <anil.tegala@candelatech.com>
Co-authored-by: haricharan-jaka <haricharan.jaka@candelatech.com>
Co-authored-by: shivam <shivam.thakur@candelatech.com>
Co-authored-by: karthikaeyetea <karthika.subramani@candelatech.com>
Co-authored-by: Dmitry Dunaev <83591011+dunaev-opsfleet@users.noreply.github.com>
Co-authored-by: Dmitry Dunaev <dmitry@opsfleet.com>
Co-authored-by: karthikeyan <karthikeyan.thirumurthy@candelatech.com>
Co-authored-by: Rajendra <rajendra.pappu@candelatech.com>
Co-authored-by: Jyothsna-setti <jyothsna.polamarasetty@candelatech.com>
2022-12-12 17:04:47 +05:30

1352 lines
65 KiB
Python

"""
This file contains the functions that are required for Perfecto iOS 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 ios_libs:
global driver, perfecto_execution_context, deviceModel
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)
self.perfecto_data = perfecto_data
self.dut_data = dut_data
self.testcase_name = testcase
pass
# Opens an APP on the device based on the argument given
def openApp(self, appName, setup_perfectoMobile):
setup_perfectoMobile[1].step_start("Opening App: " + appName)
params = {'identifier': appName}
# Open/Close/Open Action is performed to ensure the app is back to its Original Settings
setup_perfectoMobile[0].execute_script('mobile:application:open', params)
setup_perfectoMobile[0].execute_script('mobile:application:close', params)
setup_perfectoMobile[0].execute_script('mobile:application:open', params)
# 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)
# 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)
# 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:
response_xml = self.response_device(model)
except:
print("Unable to get response.")
raise Exception("Unable to get response.")
device_available = self.get_attribute_device(response_xml, 'available')
print("Result:" + device_available)
if device_available == 'true':
return True
else:
allocated_to = self.get_attribute_device(response_xml, '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:
response_xml = self.response_device(model)
except:
print("Unable to get response.")
raise Exception("Unable to get response.")
try:
attribute_value = self.get_attribute_device(response_xml, str(attribute))
except:
attribute_value = False
return attribute_value
# Used to get the iOS Device driver obj for further utility,Base function for iOS Tests
def setup_perfectoMobile_iOS(self, get_device_configuration, perfecto_data):
global perfecto_execution_context, driver, deviceModel
from appium import webdriver
driver = None
reporting_client = None
warnings.simplefilter("ignore", ResourceWarning)
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
capabilities = {
'platformName': get_device_configuration["platformName-iOS"],
'model': get_device_configuration["model-iOS"],
'browserName': 'safari',
# 'automationName' : 'Appium',
'securityToken': perfecto_data["securityToken"],
'useAppiumForWeb': 'false',
'autoAcceptAlerts': 'true',
# 'bundleId' : request.config.getini("bundleId-iOS"),
'useAppiumForHybrid': 'false',
}
# Check if the device is available
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:
TestCaseName = 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("\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 ----------")
print('Report-Url: ' + reporting_client.report_url())
try:
allure.dynamic.link(
str(reporting_client.report_url()),
name=str(deviceModel))
except:
print("fail to attach video link")
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)
# Checks the Available SSIDS on device and return them in the form of List
def get_all_available_ssids(self, driver):
print("\n----------------------------")
print("Get All Available SSID")
print("------------------------------")
active_ssid_list = []
try:
time.sleep(2)
driver.implicitly_wait(2)
elements = driver.find_elements_by_xpath("(//*[@label='More Info']/parent::*/XCUIElementTypeStaticText)")
print(len(elements))
for i in range(len(elements)):
active_ssid_list.append(elements[i].text)
print("active_ssid_list: ", active_ssid_list)
except:
print("No SSIDS available")
return active_ssid_list
# checks if SSID is visible or not on the Phone screen
def ssid_Visible(self, driver, WifiName):
wifiSelectionElement = WebDriverWait(driver, 30).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='" + WifiName + "']")))
isVisible = wifiSelectionElement.get_attribute("visible")
print(f"Is ssid visible: {isVisible}")
if (isVisible == 'false'):
return False
else:
return True
# 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)
# 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('com.ookla.speedtest', setup_perfectoMobile)
driver.find_element_by_xpath("//*[@label='GO']").click()
# Wait untill 2 minutes for the test to complete
WebDriverWait(driver, 120).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@value='Test Again']")))
result = driver.find_element_by_xpath("//XCUIElementTypeOther[contains(@label,'Download Speed')]").text
print(result)
download_speed = result.split('Download Speed, ')[1].split('. ')[0]
upload_speed = result.split('Upload speed, ')[1].split('. ')[0]
download_speed = str(download_speed)[0:4]
upload_speed = str(upload_speed)[0:4]
print(f"Download speed: {download_speed}")
print(f"Upload speed: {upload_speed}")
return download_speed, upload_speed
# Function used to connect to a particular SSID
def wifi_connect(self, ssid, passkey, setup_perfectoMobile, connData):
print("\n-------------------------------------")
print("Select Wifi/Get IP Address IOS Connection")
print("-------------------------------------")
is_internet = False
wifi_name = ssid
wifi_pass = passkey
ssid_found = False
print("Verifying Wifi/AP Connection Details....")
report = setup_perfectoMobile[1]
driver = setup_perfectoMobile[0]
report.step_start("Switching Driver Context")
print("Switching Context to Native")
driver.switch_to.context('NATIVE_APP')
# driver.switch_to.context(contexts[0])
report.step_start("Set Wifi Network to " + wifi_name)
# Open Settings Application
logging.info("Opening IOS setting APP")
self.openApp(self.connData["bundleId-iOS-Settings"], setup_perfectoMobile)
try:
time.sleep(2)
driver.implicitly_wait(2)
try:
print("Verifying Connected Wifi Connection")
report.step_start("Loading Wifi Page")
element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']")
element.click()
except NoSuchElementException:
print("Exception: Verify Xpath - unable to click on Wifi")
logging.error("Exception: Verify Xpath - unable to click on Wifi")
time.sleep(2)
driver.implicitly_wait(4)
# --------------------To Turn on WIFi Switch if already OFF--------------------------------
try:
get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
get_wifi_switch_element_text = get_wifi_switch_element.text
try:
if get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0:
get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
driver.implicitly_wait(1)
get_wifi_switch_element.click()
driver.implicitly_wait(1)
i = 0
for i in range(5):
try:
get_wifi_switch_element = driver.find_element_by_xpath(
"//*[@label='Wi-Fi' and @value='1']")
get_wifi_switch_element_text = get_wifi_switch_element.text
except:
print("Switch is OFF")
logging.info("Wifi Switch is OFF")
if get_wifi_switch_element_text == "1" or get_wifi_switch_element_text == 1:
print("WIFI Switch is ON")
logging.info("Wifi Switch is ON")
break
else:
try:
get_wifi_switch_element = driver.find_element_by_xpath(
"//*[@label='Wi-Fi' and @value='0']")
get_wifi_switch_element_text = get_wifi_switch_element.text
except:
print("WIFi switch is ON")
logging.info("Wifi Switch is ON")
if (get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0):
print("switch is still OFF")
logging.error("Wifi Switch is OFF")
self.closeApp(self.connData["bundleId-iOS-Settings"], setup_perfectoMobile)
return is_internet, setup_perfectoMobile, ssid_found
else:
print("Switch is Still OFF")
logging.error("Wifi Switch is OFF")
self.closeApp(self.connData["bundleId-iOS-Settings"], setup_perfectoMobile)
return is_internet, setup_perfectoMobile, ssid_found
except:
print("No switch element found")
logging.error("No switch element found")
except:
print("get_wifi_switch_element is ON")
logging.warning("get_wifi_switch_element is ON")
# --------------------To Turn on WIFi Switch if already OFF--------------------------------
except:
print("Cannot find WIFI element")
logging.error("Cannot find WIFI element")
self.closeApp(self.connData["bundleId-iOS-Settings"], setup_perfectoMobile)
return is_internet, setup_perfectoMobile, ssid_found
# ---------------------This is to Forget current connected SSID-------------------------------
# ---------------------This to Avoid any popup page from captive portal--------------------#
try:
time.sleep(4)
print("getting in to Additional details")
report.step_start("Clicking More Info")
logging.info("getting in to Additional details")
additional_details_element = driver.find_element_by_xpath(
"//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")
additional_details_element.click()
try:
time.sleep(2)
print("Forget Connected Network")
logging.info("Forget Connected Network")
forget_ssid = WebDriverWait(driver, 30).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget This Network']")))
forget_ssid.click()
print("Forget old ssid")
logging.info("Forget old ssid")
try:
time.sleep(2)
report.step_start("Forget SSID popup1")
forget_ssid_popup = WebDriverWait(driver, 30).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget']")))
forget_ssid_popup.click()
print("**alert** Forget SSID popup killed **alert**")
except:
print("Forget SSID popup not found")
except:
print("couldn't find forget ssid element")
logging.warning("couldn't find forget ssid element")
except:
print("No connected SSID")
logging.info("No connected SSID")
try:
report.step_start("Unexpected Captive Popup")
print("Unexpeceted Captive Poped Up")
captive_portal_cancel_element = driver.find_element_by_xpath("//*[@label='Cancel']")
captive_portal_cancel_element.click()
time.sleep(2)
use_other_network_element = driver.find_element_by_xpath("//*[@label='Use Other Network']")
use_other_network_element.click()
time.sleep(2)
except:
print("No Captive Portal Popup Found")
try:
time.sleep(4)
print("getting in to Additional details")
report.step_start("Clicking More Info")
additional_details_element = driver.find_element_by_xpath(
"//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")
additional_details_element.click()
try:
time.sleep(2)
print("Forget Connected Network")
forget_ssid = WebDriverWait(driver, 30).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget This Network']")))
forget_ssid.click()
print("Forget old ssid")
try:
time.sleep(2)
report.step_start("Forget SSID popup1")
forget_ssid_popup = WebDriverWait(driver, 30).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget']")))
forget_ssid_popup.click()
print("**alert** Forget SSID popup killed **alert**")
except:
print("Forget SSID popup not found")
except:
print("couldn't find forget ssid element")
except:
print("No connected SSID")
# ---------------------This is to Forget current connected SSID-------------------------------
# ---------------------To get all available SSID and select it-------------------------------
print("Searching for Wifi: " + wifi_name)
# allure.attach(name= body=str("Searching for Wifi: " + wifi_name))
time.sleep(2)
report.step_start("Searching SSID")
print("Selecting Wifi: " + wifi_name)
available_ssids = False
try:
for check_for_all_ssids in range(12):
available_ssids = self.get_all_available_ssids(driver)
allure.attach(name="Available SSIDs in device: ", body=str(available_ssids))
try:
if (not self.ssid_Visible(driver, wifi_name)) or (wifi_name not in available_ssids):
self.scrollDown(setup_perfectoMobile)
time.sleep(2)
else:
try:
driver.implicitly_wait(8)
report.step_start("Selecting SSID To Connect")
ssid_found = True
print(wifi_name + " : Found in Device")
wifiSelElement = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='" + wifi_name + "']")))
print(wifiSelElement)
wifiSelElement.click()
print("Selecting SSID")
break
except:
print("SSID unable to select")
logging.error("Unable to select SSID")
report.step_start("Selecting Unable SSID To Connect")
self.closeApp(self.connData["bundleId-iOS-Settings"], setup_perfectoMobile)
return is_internet, setup_perfectoMobile, ssid_found
except:
print("couldn't connect to " + wifi_name)
logging.error("Couldn't Find ssid")
# request.config.cache.set(key="SelectingWifiFailed", value=str(e))
self.closeApp(self.connData["bundleId-iOS-Settings"], setup_perfectoMobile)
return is_internet, setup_perfectoMobile, ssid_found
pass
if not ssid_found:
print("could not found " + wifi_name + " in device")
logging.error("Couldn't Find ssid in device")
self.closeApp(self.connData["bundleId-iOS-Settings"], setup_perfectoMobile)
return is_internet, setup_perfectoMobile, ssid_found
except:
pass
# ---------------------To get all available SSID and select it-------------------------------
# ---------------------Set Password-------------------------------
try:
driver.implicitly_wait(5)
print("Entering Password")
logging.info("Entering Password")
report.step_start("Entering Password")
wifiPassword = driver.find_element_by_xpath("//*[@label='Password']")
wifiPassword.send_keys(wifi_pass)
except NoSuchElementException:
print("Enter Password Page Not Loaded")
logging.warning("Enter Password Page Not Loaded")
# ---------------------Set Password-------------------------------
# ---------------------Click on join-------------------------------
try:
driver.implicitly_wait(4)
print("Selecting join")
report.step_start("Clicking JOIN")
joinBTN = driver.find_element_by_xpath("//*[@label='Join']")
joinBTN.click()
except Exception as e:
print("Join Button Not Enabled...Password may not be needed")
logging.warning("Join Button Not Enabled...Password may not be needed")
# ---------------------Click on join-------------------------------
# ---------------------check if internet-------------------------------
try:
driver.implicitly_wait(5)
WifiInternetErrMsg2 = driver.find_element_by_xpath("//*[@label='No Internet Connection']")
# = driver.find_element_by_xpath("//*[@label='No Internet Connection']").text
except Exception as e:
is_internet = True
print("No Wifi-AP Error Internet Error: " + wifi_name)
# Need to add Wait for Selected Wifi Xpath
# time.sleep(3)
# ---------------------check if internet-------------------------------
return is_internet, setup_perfectoMobile, ssid_found
# Gets the IP Address of the connected SSID from Phone
def get_ip_address(self, ssid, setup_perfectoMobile, connData):
wifi_name = ssid
driver = setup_perfectoMobile[0]
report = setup_perfectoMobile[1]
# ---------------------Additional INFO-------------------------------
try:
driver.implicitly_wait(5)
print("Selecting SSID: ", wifi_name)
report.step_start("Additional details of SSID")
additional_details_element = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH,
"//*[@label='" + wifi_name + "']")))
# //*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']
additional_details_element.click()
try:
driver.implicitly_wait(2)
report.step_start("Checking SSID Name as Expected")
print("Checking SSID Name")
ssidname_text = driver.find_element_by_xpath("//*[@label='" + wifi_name + "']").text
print(ssidname_text)
if (ssidname_text == wifi_name):
print("SSID Matched")
logging.info("SSID Matched")
allure.attach(name="SSID Matched ", body=str(wifi_name))
else:
print("SSID Not Matched")
logging.info("SSID Not Matched")
allure.attach(name="SSID Not Matched ", body=str(wifi_name))
reportFlag = False
assert reportFlag
except:
print("SSID is not Checked in more Info")
logging.warning("SSID is not Checked in more Info")
try:
report.step_start("Checking WiFi Address")
print("Checking WIFI address")
# (//*[@label="IP Address"]/parent::*/XCUIElementTypeStaticText)[2]
wifi_address_element_text = driver.find_element_by_xpath(
"(//*[@label='Wi-Fi Address']/parent::*/XCUIElementTypeStaticText)[2]").text
print("wifi_address_element_text: ", wifi_address_element_text)
allure.attach(name="Connected SSID WiFi-Address: ", body=str(wifi_address_element_text))
except Exception as e:
print("WiFi-Address not Found")
logging.warning("WiFi-Address not Found")
try:
time.sleep(4)
report.step_start("Checking IP Address")
print("Checking IP address")
logging.info("Checking IP address")
# (//*[@label="IP Address"]/parent::*/XCUIElementTypeStaticText)[2]
ip_address_element_text = driver.find_element_by_xpath(
"(//*[@label='IP Address']/parent::*/XCUIElementTypeStaticText)[2]").text
print("ip_address_element_text: ", ip_address_element_text)
except Exception as e:
try:
time.sleep(4)
print("Scrolling for checking ip address")
self.scrollDown(setup_perfectoMobile)
ip_address_element_text = driver.find_element_by_xpath(
"(//*[@label='IP Address']/parent::*/XCUIElementTypeStaticText)[2]").text
print("ip_address_element_text: ", ip_address_element_text)
except:
print("IP Address not Found")
logging.info("IP Address not Found")
except Exception as e:
print("Select Additional Info failed")
logging.warning("Select Additional Info failed")
# ---------------------Additional INFO-------------------------------
return ip_address_element_text
def run_speed_test(self, setup_perfectoMobile, connData):
print("\n-------------------------------------")
print("Verify Upload & Download Speed")
print("-------------------------------------")
report = setup_perfectoMobile[1]
driver = setup_perfectoMobile[0]
current_result = True
contexts = driver.contexts
# print("Printing Context")
# print(contexts)
driver.switch_to.context('WEBVIEW_1')
time.sleep(5)
try:
print("Launching Safari")
report.step_start("Google Home Page")
time.sleep(4)
driver.get(connData["webURL"])
print("Enter Search Text")
time.sleep(4)
driver.find_element_by_xpath("//*[@class='gLFyf']").send_keys("Internet speed test")
time.sleep(4)
driver.find_element_by_xpath("//*[@class='aajZCb']//*[@class='nz2CCf']/li[1]/div[1]/div[1]").click()
except:
try:
print("Finding search option")
report.step_start("Input For Search")
driver.implicitly_wait(4)
driver.get(connData["webURL"])
print("Enter Search Text")
driver.implicitly_wait(4)
element_find_txt = driver.find_element_by_xpath(connData["lblSearch"])
element_find_txt.send_keys("Internet Speed Test")
except Exception as e:
print("Launching Safari Failed")
print(e)
try:
print("Click Run Speed Test Button...")
report.step_start("Click Run Speed Test Button")
driver.implicitly_wait(4)
driver.find_element_by_xpath(connData["BtnRunSpeedTest"]).click()
except NoSuchElementException:
current_result = False
print("Run Speed Test Button element not found", NoSuchElementException)
return current_result
# Get upload/Download Speed
try:
report.step_start("Get upload/Download Speed")
time.sleep(60)
download_mbps = driver.find_element_by_xpath(connData["downloadMbps"])
download_speed = download_mbps.text
print("Download: " + download_speed + " Mbps")
time.sleep(30)
upload_mbps = driver.find_element_by_xpath(connData["UploadMbps"])
upload_speed = upload_mbps.text
print("Upload: " + upload_speed + " Mbps")
allure.attach(name="Speed Test logs: ",
body=str("Upload: " + upload_speed + " Mbps" + " Download: " + download_speed + " Mbps"))
print("Access Point Verification Completed Successfully")
except NoSuchElementException:
print("Access Point Verification NOT Completed, checking Connection....")
current_result = False
return current_result
#----------Wifi connect for Enterprise Security---------------
def wifi_connect_eap(self, ssid, user, ttls_passwd, setup_perfectoMobile, connData):
print("\n-------------------------------------")
print("Select Wifi/Get IP Address IOS Connection")
print("-------------------------------------")
is_internet = False
wifi_name = ssid
ssid_found = False
print("Verifying Wifi/AP Connection Details....")
report = setup_perfectoMobile[1]
driver = setup_perfectoMobile[0]
report.step_start("Switching Driver Context")
print("Switching Context to Native")
driver.switch_to.context('NATIVE_APP')
# driver.switch_to.context(contexts[0])
report.step_start("Set Wifi Network to " + wifi_name)
# Open Settings Application
logging.info("Opening IOS setting APP")
self.openApp(self.connData["bundleId-iOS-Settings"], setup_perfectoMobile)
try:
time.sleep(2)
driver.implicitly_wait(2)
try:
print("Verifying Connected Wifi Connection")
report.step_start("Loading Wifi Page")
element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']")
element.click()
except NoSuchElementException:
print("Exception: Verify Xpath - unable to click on Wifi")
logging.error("Exception: Verify Xpath - unable to click on Wifi")
time.sleep(2)
driver.implicitly_wait(4)
# --------------------To Turn on WIFi Switch if already OFF--------------------------------
try:
get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
get_wifi_switch_element_text = get_wifi_switch_element.text
try:
if get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0:
get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
driver.implicitly_wait(1)
get_wifi_switch_element.click()
driver.implicitly_wait(1)
i = 0
for i in range(5):
try:
get_wifi_switch_element = driver.find_element_by_xpath(
"//*[@label='Wi-Fi' and @value='1']")
get_wifi_switch_element_text = get_wifi_switch_element.text
except:
print("Switch is OFF")
logging.info("Wifi Switch is OFF")
if get_wifi_switch_element_text == "1" or get_wifi_switch_element_text == 1:
print("WIFI Switch is ON")
logging.info("Wifi Switch is ON")
break
else:
try:
get_wifi_switch_element = driver.find_element_by_xpath(
"//*[@label='Wi-Fi' and @value='0']")
get_wifi_switch_element_text = get_wifi_switch_element.text
except:
print("WIFi switch is ON")
logging.info("Wifi Switch is ON")
if (get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0):
print("switch is still OFF")
logging.error("Wifi Switch is OFF")
self.closeApp(self.connData["bundleId-iOS-Settings"], setup_perfectoMobile)
return is_internet, setup_perfectoMobile, ssid_found
else:
print("Switch is Still OFF")
logging.error("Wifi Switch is OFF")
self.closeApp(self.connData["bundleId-iOS-Settings"], setup_perfectoMobile)
return is_internet, setup_perfectoMobile, ssid_found
except:
print("No switch element found")
logging.error("No switch element found")
except:
print("get_wifi_switch_element is ON")
logging.warning("get_wifi_switch_element is ON")
# --------------------To Turn on WIFi Switch if already OFF--------------------------------
except:
print("Cannot find WIFI element")
logging.error("Cannot find WIFI element")
self.closeApp(self.connData["bundleId-iOS-Settings"], setup_perfectoMobile)
return is_internet, setup_perfectoMobile, ssid_found
# ---------------------This is to Forget current connected SSID-------------------------------
# ---------------------This to Avoid any popup page from captive portal--------------------#
try:
time.sleep(4)
print("getting in to Additional details")
report.step_start("Clicking More Info")
logging.info("getting in to Additional details")
additional_details_element = driver.find_element_by_xpath(
"//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")
additional_details_element.click()
try:
time.sleep(2)
print("Forget Connected Network")
logging.info("Forget Connected Network")
forget_ssid = WebDriverWait(driver, 30).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget This Network']")))
forget_ssid.click()
print("Forget old ssid")
logging.info("Forget old ssid")
try:
time.sleep(2)
report.step_start("Forget SSID popup1")
forget_ssid_popup = WebDriverWait(driver, 30).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget']")))
forget_ssid_popup.click()
print("**alert** Forget SSID popup killed **alert**")
except:
print("Forget SSID popup not found")
except:
print("couldn't find forget ssid element")
logging.warning("couldn't find forget ssid element")
except:
print("No connected SSID")
logging.info("No connected SSID")
try:
report.step_start("Unexpected Captive Popup")
print("Unexpeceted Captive Poped Up")
captive_portal_cancel_element = driver.find_element_by_xpath("//*[@label='Cancel']")
captive_portal_cancel_element.click()
time.sleep(2)
use_other_network_element = driver.find_element_by_xpath("//*[@label='Use Other Network']")
use_other_network_element.click()
time.sleep(2)
except:
print("No Captive Portal Popup Found")
try:
time.sleep(4)
print("getting in to Additional details")
report.step_start("Clicking More Info")
additional_details_element = driver.find_element_by_xpath(
"//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")
additional_details_element.click()
try:
time.sleep(2)
print("Forget Connected Network")
forget_ssid = WebDriverWait(driver, 30).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget This Network']")))
forget_ssid.click()
print("Forget old ssid")
try:
time.sleep(2)
report.step_start("Forget SSID popup1")
forget_ssid_popup = WebDriverWait(driver, 30).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Forget']")))
forget_ssid_popup.click()
print("**alert** Forget SSID popup killed **alert**")
except:
print("Forget SSID popup not found")
except:
print("couldn't find forget ssid element")
except:
print("No connected SSID")
# ---------------------This is to Forget current connected SSID-------------------------------
# ---------------------To get all available SSID and select it-------------------------------
print("Searching for Wifi: " + wifi_name)
# allure.attach(name= body=str("Searching for Wifi: " + wifi_name))
time.sleep(2)
report.step_start("Searching SSID")
print("Selecting Wifi: " + wifi_name)
ssid_found = False
available_ssids = False
try:
for check_for_all_ssids in range(12):
available_ssids = self.get_all_available_ssids(driver)
allure.attach(name="Available SSIDs in device: ", body=str(available_ssids))
try:
if (not self.ssid_Visible(driver, wifi_name)) or (wifi_name not in available_ssids):
self.scrollDown(setup_perfectoMobile)
time.sleep(2)
else:
try:
driver.implicitly_wait(8)
report.step_start("Selecting SSID To Connect")
ssid_found = True
print(wifi_name + " : Found in Device")
wifi_sel_element = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='" + wifi_name + "']")))
print(wifi_sel_element)
wifi_sel_element.click()
print("Selecting SSID")
break
except:
print("SSID unable to select")
logging.error("Unable to select SSID")
report.step_start("Selecting Unable SSID To Connect")
self.closeApp(self.connData["bundleId-iOS-Settings"], setup_perfectoMobile)
return is_internet, setup_perfectoMobile, ssid_found
except:
print("couldn't connect to " + wifi_name)
logging.error("Couldn't Find ssid")
# request.config.cache.set(key="SelectingWifiFailed", value=str(e))
self.closeApp(self.connData["bundleId-iOS-Settings"], setup_perfectoMobile)
return is_internet, setup_perfectoMobile, ssid_found
pass
if not ssid_found:
print("could not found " + wifi_name + " in device")
logging.error("Couldn't Find ssid in device")
self.closeApp(self.connData["bundleId-iOS-Settings"], setup_perfectoMobile)
return is_internet, setup_perfectoMobile, ssid_found
except:
pass
# ---------------------To get all available SSID and select it-------------------------------
# Set username
# -------------------------------------------------------
try:
driver.implicitly_wait(4)
report.step_start("Entering User")
print("Entering User name")
logging.info("Entering User name")
wifi_user_element = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Username']")))
wifi_user_element.send_keys(user)
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")
# -------------------------------------------------------
# ---------------------Set Password-------------------------------
try:
driver.implicitly_wait(4)
report.step_start("Entering Password")
print("Entering password")
wifi_password = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Password']")))
wifi_password.send_keys(ttls_passwd)
except NoSuchElementException:
print("Enter Password Page Not Loaded")
logging.error("Enter Password Page Not Loaded")
# ---------------------Set Password-------------------------------
# -------------------------------------------------------
# ---------------------Click on join-------------------------------
try:
driver.implicitly_wait(4)
report.step_start("Clicking Join")
print("Clicking Join")
join_btn = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Join']")))
join_btn.click()
except Exception as e:
print("Join Button Not Enabled...Password may not be needed")
logging.error("Join Button Not Enabled...Password may not be needed")
# ---------------------Click on join-------------------------------
# Selecting certificate
# -------------------------------------------------------
try:
driver.implicitly_wait(4)
report.step_start("Clicking Trust CA Cert")
print("Clicking Trust CA Cert")
cert_element = WebDriverWait(driver, 45).until(
EC.presence_of_element_located((MobileBy.XPATH, "//*[@label='Trust']")))
cert_element.click()
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")
# ---------------------check if internet-------------------------------
try:
driver.implicitly_wait(5)
wifi_internet_err_msg = driver.find_element_by_xpath("//*[@label='No Internet Connection']")
# = driver.find_element_by_xpath("//*[@label='No Internet Connection']").text
except Exception as e:
is_internet = True
print("No Wifi-AP Error Internet Error: " + wifi_name)
logging.error("No Wifi-AP Error Internet Error: " + wifi_name)
# Need to add Wait for Selected Wifi Xpath
# time.sleep(3)
# ---------------------check if internet-------------------------------
return is_internet, setup_perfectoMobile, ssid_found
def wifi_disconnect(self, ssid, setup_perfectoMobile, connData):
print("\n-------------------------------------")
print("Wifi Disconnect and Forget Connection")
print("-------------------------------------")
print("Verifying Wifi/AP Connection Details....")
report = setup_perfectoMobile[1]
driver = setup_perfectoMobile[0]
report.step_start("Switching Driver Context")
print("Switching Context to Native")
driver.switch_to.context('NATIVE_APP')
# driver.switch_to.context(contexts[0])
report.step_start("Set Wifi Network to " + ssid)
# Open Settings Application
self.openApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
try:
time.sleep(2)
driver.implicitly_wait(2)
try:
print("Verifying Connected Wifi Connection")
report.step_start("Loading Wifi Page")
element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']")
element.click()
except NoSuchElementException:
print("Exception: Verify Xpath - unable to click on Wifi")
time.sleep(2)
driver.implicitly_wait(2)
# --------------------To Turn on WIFi Switch if already OFF--------------------------------
try:
get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
get_wifi_switch_element_text = get_wifi_switch_element.text
if get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0:
get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
driver.implicitly_wait(1)
get_wifi_switch_element.click()
driver.implicitly_wait(1)
i = 0
for i in range(5):
try:
get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
get_wifi_switch_element_text = get_wifi_switch_element.text
except:
print("switch is OFF")
if get_wifi_switch_element_text == "1" or get_wifi_switch_element_text == 1:
print("WIFI Switch is ON")
break
else:
try:
get_wifi_switch_element = driver.find_element_by_xpath(
"//*[@label='Wi-Fi' and @value='0']")
get_wifi_switch_element_text = get_wifi_switch_element.text
except:
print("WIFi switch is ON")
if (get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0):
print("switch is still OFF")
self.closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
else:
print("Switch is Still OFF")
self.closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
except:
print("get_wifi_switch_element is ON")
# --------------------To Turn on WIFi Switch if already OFF--------------------------------
except:
print("Cannot find WIFI element")
self.closeApp(connData["bundleId-iOS-Settings"], setup_perfectoMobile)
# ---------------------This is to Forget current connected SSID-------------------------------
try:
print("getting in to Additional details")
additional_details_element = driver.find_element_by_xpath(
"//*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']")
additional_details_element.click()
try:
print("Forget Connected Network")
forget_ssid = driver.find_element_by_xpath("//*[@label='Forget This Network']")
forget_ssid.click()
print("Forget old ssid")
try:
report.step_start("Forget SSID popup1")
forget_ssid_popup = driver.find_element_by_xpath("//*[@label='Forget']")
forget_ssid_popup.click()
print("**alert** Forget SSID popup killed **alert**")
except:
print("Forget SSID popup not found")
except:
print("couldn't find forget ssid element")
except:
print("No connected SSID")
# ---------------------This is to Forget current connected SSID-------------------------------
# --------------------To Turn on WIFi Switch if already OFF--------------------------------
try:
get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
get_wifi_switch_element_text = get_wifi_switch_element.text
print("switch state is : ", get_wifi_switch_element_text)
try:
if get_wifi_switch_element_text == "1" or get_wifi_switch_element_text == 1:
get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
driver.implicitly_wait(1)
get_wifi_switch_element.click()
driver.implicitly_wait(1)
i = 0
for i in range(5):
try:
get_wifi_switch_element = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
get_wifi_switch_element_text = get_wifi_switch_element.text
except:
print("switch is ON")
if get_wifi_switch_element_text == "0" or get_wifi_switch_element_text == 0:
print("WIFI Switch is OFF")
break
else:
try:
get_wifi_switch_element = driver.find_element_by_xpath(
"//*[@label='Wi-Fi' and @value='1']")
get_wifi_switch_element.click()
get_wifi_switch_element_text = get_wifi_switch_element.text
except:
print("WIFi switch is OFF")
else:
print("Switch is Still OFF")
except:
pass
except:
print("get_wifi_switch_element is ON")
# --------------------To Turn on WIFi Switch if already OFF--------------------------------
def toggle_wifi_mode(self,ssid, setup_perfectoMobile, connData):
print("\n-----------------------")
print("Toggle Wifi Mode")
print("-----------------------")
report = setup_perfectoMobile[1]
driver = setup_perfectoMobile[0]
try: # Disabling wifi-toggle button
time.sleep(2)
driver.implicitly_wait(2)
print("Disable Wifi Radio Btn")
report.step_start("Disable Wifi Radio Btn")
wifiRadioBTN_On = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='1']")
driver.implicitly_wait(1)
wifiRadioBTN_On.click()
driver.implicitly_wait(15)
# time.sleep(15)
except NoSuchElementException:
print("Wifi Radio Button Not Disabled...")
try: # Enabling wifi-toggle button
time.sleep(2)
driver.implicitly_wait(2)
print("Enable Wifi Radio Btn")
report.step_start("Enable Wifi Radio Btn")
wifiRadioBTN_Off = driver.find_element_by_xpath("//*[@label='Wi-Fi' and @value='0']")
driver.implicitly_wait(1)
wifiRadioBTN_Off.click()
driver.implicitly_wait(30)
#time.sleep(30)
except NoSuchElementException:
print("Wifi Radio Button Not Enabled...")
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")
driver.implicitly_wait(2)
WifiNameElement = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH, "//AppiumAUT/XCUIElementTypeApplication[1]/XCUIElementTypeWindow[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeTable[1]/XCUIElementTypeCell[2]/XCUIElementTypeStaticText[1]")))
Wifi_SSID_Name = WifiNameElement.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]
currentResult = True
# Open Settings Application
self.openApp(self.connData["bundleId-iOS-Settings"], setup_perfectoMobile)
# Toggle Airplane Mode
print("Toggle Airplane Mode..")
report.step_start("Toggle Airplane Mode")
try:
AirplaneMode = driver.find_element_by_xpath("//XCUIElementTypeSwitch[@label='Airplane Mode']")
# Toggle Airplane Mode
AirplaneMode.click()
# Verify Cellular Mode Text
report.step_start("Verify Cellular Mode")
try:
CellularMsgEle = driver.find_element_by_xpath("//*[@name='Airplane Mode' and @value='Airplane Mode']")
# ssertEqual(CellularMsgEle.text, "Airplane Mode", "Airplane Mode Not Triggerd")
print("Verify Cellular Mode Text: Airplane Mode Success")
except NoSuchElementException:
currentResult = False
print("Cellular Mode Not in Airplane Mode: ERROR")
AirplaneMode.click()
except NoSuchElementException:
currentResult = False
print("Airplane Wifi Button not loaded...")
report.step_start("Verify No Sim Card Installed Msg Popup")
print("Verify No Sim Card Installed Msg Popup..")
try:
NoSimCardErrorMsg = driver.find_element_by_xpath("//*[@value='No SIM Card Installed']")
except NoSuchElementException:
print("No Sim Card AlertMsg")
print("Click ok on No Sim Card Msg Popup..")
report.step_start("Click ok on No Sim Card Msg Popup")
try:
NoSimCardErrorMsgOK = driver.find_element_by_xpath("//*[@label='OK']")
NoSimCardErrorMsgOK.click()
except NoSuchElementException:
print("No Sim Card AlertMsg")
try:
print("Verifying Connected Wifi Connection")
report.step_start("Loading Wifi Page")
element = driver.find_element_by_xpath("//XCUIElementTypeCell[@name='Wi-Fi']")
element.click()
except NoSuchElementException:
print("Exception: Verify Xpath - unable to click on Wifi")
logging.error("Exception: Verify Xpath - unable to click on Wifi")
wifi_name = ssid
# ---------------------Additional INFO-------------------------------
try:
driver.implicitly_wait(5)
print("Selecting SSID: ", wifi_name)
report.step_start("Additional details of SSID")
additional_details_element = WebDriverWait(driver, 35).until(
EC.presence_of_element_located((MobileBy.XPATH,
"//*[@label='" + wifi_name + "']")))
# //*[@label='selected']/parent::*/parent::*/XCUIElementTypeButton[@label='More Info']
additional_details_element.click()
try:
driver.implicitly_wait(2)
report.step_start("Checking SSID Name as Expected")
print("Checking SSID Name")
ssid_name_text = driver.find_element_by_xpath("//*[@label='" + wifi_name + "']").text
print(ssid_name_text)
if (ssid_name_text == wifi_name):
print("SSID Matched")
logging.info("SSID Matched")
allure.attach(name="SSID Matched ", body=str(wifi_name))
else:
print("SSID Not Matched")
logging.info("SSID Not Matched")
allure.attach(name="SSID Not Matched ", body=str(wifi_name))
reportFlag = False
assert reportFlag
except:
print("SSID is not Checked in more Info")
logging.warning("SSID is not Checked in more Info")
except Exception as e:
print("Select Additional Info failed")
logging.warning("Select Additional Info failed")
if ssid.__eq__(ssid_name_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",
"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
}
}
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 = ios_libs()