report.html

Report generated on 04-May-2023 at 01:41:34 by pytest-html v2.1.1

Environment

Packages {"pluggy": "0.13.1", "py": "1.9.0", "pytest": "7.2.2"}
Platform Windows-10-10.0.19041-SP0
Plugins {"allure-pytest": "2.8.18", "datadir": "1.3.1", "html": "2.1.1", "metadata": "1.10.0", "order": "1.1.0", "xdist": "3.2.1"}
Python 3.8.5

Summary

65 tests ran in 6088.36 seconds.

20 passed, 0 skipped, 45 failed, 0 errors, 0 expected failures, 0 unexpected passes

Results

Result Test Duration Links
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[C] 63.74
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x00000274410E3C10>
value = 'C', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
------------------------------Captured stderr call------------------------------
--- Logging error --- Traceback (most recent call last): File "c:\users\qateam\appdata\local\programs\python\python38\lib\logging\__init__.py", line 1084, in emit stream.write(msg + self.terminator) File "c:\users\qateam\appdata\local\programs\python\python38\lib\encodings\cp1252.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\u20b9' in position 128: character maps to <undefined> Call stack: File "c:\users\qateam\appdata\local\programs\python\python38\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File "c:\users\qateam\appdata\local\programs\python\python38\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "C:\Users\qateam\AppData\Local\Programs\Python\Python38\Scripts\pytest.exe\__main__.py", line 7, in <module> sys.exit(console_main()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\config\__init__.py", line 190, in console_main code = main() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\config\__init__.py", line 167, in main ret: Union[ExitCode, int] = config.hook.pytest_cmdline_main( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 317, in pytest_cmdline_main return wrap_session(config, _main) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 270, in wrap_session session.exitstatus = doit(config, session) or 0 File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 324, in _main config.hook.pytest_runtestloop(session=session) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 349, in pytest_runtestloop item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 112, in pytest_runtest_protocol runtestprotocol(item, nextitem=nextitem) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 131, in runtestprotocol reports.append(call_and_report(item, "call", log)) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 220, in call_and_report call = call_runtest_hook(item, when, **kwds) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 259, in call_runtest_hook return CallInfo.from_call( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 339, in from_call result: Optional[TResult] = func() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 260, in <lambda> lambda: ihook(item=item, **kwds), when=when, reraise=reraise File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 167, in pytest_runtest_call item.runtest() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\python.py", line 1789, in runtest self.ihook.pytest_pyfunc_call(pyfuncitem=self) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\python.py", line 195, in pytest_pyfunc_call result = testfunction(**testargs) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 124, in test_Orders_and_Payment_Flow_certification logging.info(f"course_data: {course_data}") Message: "course_data: ({'course_name': 'CISA®', 'course_type': 'Online Bootcamp', 'base_price': '₹ 174,195.00', 'final_price': '205,550.10'}, (['Credit Card', 'Debit Card', 'Net Banking', 'UPI', 'EMI', 'ShopSe EMI', 'CCAvenue'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'debitcard': 'All option clickable and Payment CTA appearing '}, {'net_banking': 'All option clickable and Payment CTA appearing '}, {'UPI': 'All option clickable and Payment CTA appearing '}, {'EMI': 'All option clickable and Payment CTA appearing '}, {'CCAvenue': 'All option clickable and Payment CTA appearing '}, {'ShopSE EMI': 'All option clickable and Payment CTA appearing '}]))" Arguments: ()
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/cyber-security/cisa-certification-training INFO  setup:orders_page.py:30 Country Set to: IN INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:345 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'CISA®', 'course_type': 'Online Bootcamp', 'base_price': '₹ 174,195.00', 'final_price': '205,550.10'}, (['Credit Card', 'Debit Card', 'Net Banking', 'UPI', 'EMI', 'ShopSe EMI', 'CCAvenue'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'debitcard': 'All option clickable and Payment CTA appearing '}, {'net_banking': 'All option clickable and Payment CTA appearing '}, {'UPI': 'All option clickable and Payment CTA appearing '}, {'EMI': 'All option clickable and Payment CTA appearing '}, {'CCAvenue': 'All option clickable and Payment CTA appearing '}, {'ShopSE EMI': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: 29294c0ecc3b971a2eef67e1eaca65905e2b871d581204ed7e2f99752247e3ab INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"32";s:4:"name";s:45:"CISA<sup>®</sup> Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:9:"205550.10";s:9:"basePrice";s:11:"174195.0000";s:19:"display_total_price";s:10:"174,195.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:2:"90";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:17:"CISA<sup>®</sup>";s:7:"priceId";s:4:"9154";s:11:"billingType";i:1;s:7:"img_url";s:67:"https://www.simplilearn.com/ice9/course_images/icons/ITSecCISA.svgz";s:10:"course_url";s:43:"/cyber-security/cisa-certification-training";s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:1:"3";s:18:"primary_label_name";s:14:"Cyber Security";s:12:"cateforyInfo";a:1:{i:3;s:14:"Cyber Security";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+91-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 643 (char 642)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[D] 62.36
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x00000274410E3E50>
value = 'D', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
------------------------------Captured stderr call------------------------------
--- Logging error --- Traceback (most recent call last): File "c:\users\qateam\appdata\local\programs\python\python38\lib\logging\__init__.py", line 1084, in emit stream.write(msg + self.terminator) File "c:\users\qateam\appdata\local\programs\python\python38\lib\encodings\cp1252.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\u20b9' in position 134: character maps to <undefined> Call stack: File "c:\users\qateam\appdata\local\programs\python\python38\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File "c:\users\qateam\appdata\local\programs\python\python38\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "C:\Users\qateam\AppData\Local\Programs\Python\Python38\Scripts\pytest.exe\__main__.py", line 7, in <module> sys.exit(console_main()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\config\__init__.py", line 190, in console_main code = main() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\config\__init__.py", line 167, in main ret: Union[ExitCode, int] = config.hook.pytest_cmdline_main( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 317, in pytest_cmdline_main return wrap_session(config, _main) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 270, in wrap_session session.exitstatus = doit(config, session) or 0 File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 324, in _main config.hook.pytest_runtestloop(session=session) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 349, in pytest_runtestloop item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 112, in pytest_runtest_protocol runtestprotocol(item, nextitem=nextitem) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 131, in runtestprotocol reports.append(call_and_report(item, "call", log)) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 220, in call_and_report call = call_runtest_hook(item, when, **kwds) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 259, in call_runtest_hook return CallInfo.from_call( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 339, in from_call result: Optional[TResult] = func() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 260, in <lambda> lambda: ihook(item=item, **kwds), when=when, reraise=reraise File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 167, in pytest_runtest_call item.runtest() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\python.py", line 1789, in runtest self.ihook.pytest_pyfunc_call(pyfuncitem=self) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\python.py", line 195, in pytest_pyfunc_call result = testfunction(**testargs) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 124, in test_Orders_and_Payment_Flow_certification logging.info(f"course_data: {course_data}") Message: "course_data: ({'course_name': 'CISSP®', 'course_type': 'Online Self Learning', 'base_price': '₹ 168,525.00', 'final_price': '198,859.50'}, (['Credit Card', 'Debit Card', 'Net Banking', 'UPI', 'EMI', 'ShopSe EMI', 'CCAvenue'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'debitcard': 'All option clickable and Payment CTA appearing '}, {'net_banking': 'All option clickable and Payment CTA appearing '}, {'UPI': 'All option clickable and Payment CTA appearing '}, {'EMI': 'All option clickable and Payment CTA appearing '}, {'CCAvenue': 'All option clickable and Payment CTA appearing '}, {'ShopSE EMI': 'All option clickable and Payment CTA appearing '}]))" Arguments: ()
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/cyber-security/cissp-certification-training INFO  setup:orders_page.py:30 Country Set to: IN INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:345 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'CISSP®', 'course_type': 'Online Self Learning', 'base_price': '₹ 168,525.00', 'final_price': '198,859.50'}, (['Credit Card', 'Debit Card', 'Net Banking', 'UPI', 'EMI', 'ShopSe EMI', 'CCAvenue'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'debitcard': 'All option clickable and Payment CTA appearing '}, {'net_banking': 'All option clickable and Payment CTA appearing '}, {'UPI': 'All option clickable and Payment CTA appearing '}, {'EMI': 'All option clickable and Payment CTA appearing '}, {'CCAvenue': 'All option clickable and Payment CTA appearing '}, {'ShopSE EMI': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: 6c29b8262af2d4041f40f9436363ec5a0dafea4078bf19aab0d6607415457042 INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"34";s:4:"name";s:39:"CISSP<sup>®</sup> Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:9:"198859.50";s:9:"basePrice";s:17:"168525.0000000000";s:19:"display_total_price";s:10:"168,525.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"2";s:10:"accessDays";s:3:"180";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:18:"CISSP<sup>®</sup>";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:68:"https://www.simplilearn.com/ice9/course_images/icons/ITSecCISSP.svgz";s:10:"course_url";s:44:"/cyber-security/cissp-certification-training";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:1:"3";s:18:"primary_label_name";s:14:"Cyber Security";s:12:"cateforyInfo";a:1:{i:3;s:14:"Cyber Security";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+91-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 633 (char 632)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[E] 63.01
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x00000274410E3EB0>
value = 'E', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
------------------------------Captured stderr call------------------------------
--- Logging error --- Traceback (most recent call last): File "c:\users\qateam\appdata\local\programs\python\python38\lib\logging\__init__.py", line 1084, in emit stream.write(msg + self.terminator) File "c:\users\qateam\appdata\local\programs\python\python38\lib\encodings\cp1252.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\u20b9' in position 163: character maps to <undefined> Call stack: File "c:\users\qateam\appdata\local\programs\python\python38\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File "c:\users\qateam\appdata\local\programs\python\python38\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "C:\Users\qateam\AppData\Local\Programs\Python\Python38\Scripts\pytest.exe\__main__.py", line 7, in <module> sys.exit(console_main()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\config\__init__.py", line 190, in console_main code = main() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\config\__init__.py", line 167, in main ret: Union[ExitCode, int] = config.hook.pytest_cmdline_main( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 317, in pytest_cmdline_main return wrap_session(config, _main) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 270, in wrap_session session.exitstatus = doit(config, session) or 0 File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 324, in _main config.hook.pytest_runtestloop(session=session) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 349, in pytest_runtestloop item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 112, in pytest_runtest_protocol runtestprotocol(item, nextitem=nextitem) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 131, in runtestprotocol reports.append(call_and_report(item, "call", log)) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 220, in call_and_report call = call_runtest_hook(item, when, **kwds) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 259, in call_runtest_hook return CallInfo.from_call( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 339, in from_call result: Optional[TResult] = func() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 260, in <lambda> lambda: ihook(item=item, **kwds), when=when, reraise=reraise File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 167, in pytest_runtest_call item.runtest() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\python.py", line 1789, in runtest self.ihook.pytest_pyfunc_call(pyfuncitem=self) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\python.py", line 195, in pytest_pyfunc_call result = testfunction(**testargs) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 124, in test_Orders_and_Payment_Flow_certification logging.info(f"course_data: {course_data}") Message: "course_data: ({'course_name': 'Big Data Hadoop and Spark Developer', 'course_type': 'Online Self Learning', 'base_price': '₹ 21,420.00', 'final_price': '25,275.60'}, (['Credit Card', 'Debit Card', 'Net Banking', 'UPI', 'EMI', 'ShopSe EMI', 'CCAvenue'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'debitcard': 'All option clickable and Payment CTA appearing '}, {'net_banking': 'All option clickable and Payment CTA appearing '}, {'UPI': 'All option clickable and Payment CTA appearing '}, {'EMI': 'All option clickable and Payment CTA appearing '}, {'CCAvenue': 'All option clickable and Payment CTA appearing '}, {'ShopSE EMI': 'All option clickable and Payment CTA appearing '}]))" Arguments: ()
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/big-data-and-analytics/big-data-and-hadoop-training INFO  setup:orders_page.py:30 Country Set to: IN INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:345 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'Big Data Hadoop and Spark Developer', 'course_type': 'Online Self Learning', 'base_price': '₹ 21,420.00', 'final_price': '25,275.60'}, (['Credit Card', 'Debit Card', 'Net Banking', 'UPI', 'EMI', 'ShopSe EMI', 'CCAvenue'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'debitcard': 'All option clickable and Payment CTA appearing '}, {'net_banking': 'All option clickable and Payment CTA appearing '}, {'UPI': 'All option clickable and Payment CTA appearing '}, {'EMI': 'All option clickable and Payment CTA appearing '}, {'CCAvenue': 'All option clickable and Payment CTA appearing '}, {'ShopSE EMI': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: 09478c25b0bbade92933a96373f8d640a8b525fb9c8668ea538614db2d44fef7 INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"15";s:4:"name";s:56:"Big Data Hadoop and Spark Developer Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:8:"25275.60";s:9:"basePrice";s:10:"21420.0000";s:19:"display_total_price";s:9:"21,420.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"2";s:10:"accessDays";s:3:"180";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:35:"Big Data Hadoop and Spark Developer";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:96:"https://www.simplilearn.com/ice9/course_images/icons/Big-Data_Big-Data-and-Hadoop-Developer.svgz";s:10:"course_url";s:52:"/big-data-and-analytics/big-data-and-hadoop-training";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:2:"35";s:18:"primary_label_name";s:8:"Big Data";s:12:"cateforyInfo";a:2:{i:35;s:8:"Big Data";i:16;s:18:"Big Data Analytics";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+91-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 715 (char 714)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[H] 67.74
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x00000274411021F0>
value = 'H', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/cyber-security/cisa-certification-training INFO  setup:orders_page.py:30 Country Set to: US INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'CISA®', 'course_type': 'Online Bootcamp', 'base_price': '$ 2,299.00', 'final_price': '2,299.00'}, (['Credit Card', 'PayPal', 'Affirm', 'Klarna'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'Affirm': 'All option clickable and Payment CTA appearing '}, {'klarna': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: 7e0a362ffe2efd9b1892c33de6d6e1e1f056d41f43d0d734bb55c4db4ca67de5 INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"32";s:4:"name";s:45:"CISA<sup>®</sup> Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:7:"2299.00";s:9:"basePrice";s:9:"2299.0000";s:19:"display_total_price";s:8:"2,299.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:2:"90";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:17:"CISA<sup>®</sup>";s:7:"priceId";s:5:"21890";s:11:"billingType";i:1;s:7:"img_url";s:67:"https://www.simplilearn.com/ice9/course_images/icons/ITSecCISA.svgz";s:10:"course_url";s:43:"/cyber-security/cisa-certification-training";s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:1:"3";s:18:"primary_label_name";s:14:"Cyber Security";s:12:"cateforyInfo";a:1:{i:3;s:14:"Cyber Security";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+1-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 638 (char 637)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[I] 69.67
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x00000274411022B0>
value = 'I', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/cyber-security/cissp-certification-training INFO  setup:orders_page.py:30 Country Set to: US INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'CISSP®', 'course_type': 'Online Self Learning', 'base_price': '$ 2,200.00', 'final_price': '2,200.00'}, (['Credit Card', 'PayPal', 'Klarna'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'klarna': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: cd176da9f76eb93b06f086eeb47e49aa582320a23ec85edda7a694b995ed9ec3 INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"34";s:4:"name";s:39:"CISSP<sup>®</sup> Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:7:"2200.00";s:9:"basePrice";s:15:"2200.0000000000";s:19:"display_total_price";s:8:"2,200.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"2";s:10:"accessDays";s:3:"180";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:18:"CISSP<sup>®</sup>";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:68:"https://www.simplilearn.com/ice9/course_images/icons/ITSecCISSP.svgz";s:10:"course_url";s:44:"/cyber-security/cissp-certification-training";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:1:"3";s:18:"primary_label_name";s:14:"Cyber Security";s:12:"cateforyInfo";a:1:{i:3;s:14:"Cyber Security";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+1-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 627 (char 626)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[J] 70.10
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x0000027441102370>
value = 'J', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/big-data-and-analytics/big-data-and-hadoop-training INFO  setup:orders_page.py:30 Country Set to: US INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'Big Data Hadoop and Spark Developer', 'course_type': 'Online Self Learning', 'base_price': '$ 899.00', 'final_price': '899.00'}, (['Credit Card', 'PayPal', 'Klarna'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'klarna': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: c854b0b9a15192aa8571d5b5f575dddfe81d7a2a4343ce3465cba4d8552aff24 INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"15";s:4:"name";s:56:"Big Data Hadoop and Spark Developer Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:6:"899.00";s:9:"basePrice";s:14:"899.0000000000";s:19:"display_total_price";s:6:"899.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"2";s:10:"accessDays";s:3:"180";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:35:"Big Data Hadoop and Spark Developer";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:96:"https://www.simplilearn.com/ice9/course_images/icons/Big-Data_Big-Data-and-Hadoop-Developer.svgz";s:10:"course_url";s:52:"/big-data-and-analytics/big-data-and-hadoop-training";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:2:"35";s:18:"primary_label_name";s:8:"Big Data";s:12:"cateforyInfo";a:2:{i:35;s:8:"Big Data";i:16;s:18:"Big Data Analytics";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+1-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 714 (char 713)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[K] 204.74
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x0000027441102430>
value = 'K', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/agile-and-scrum/agile-and-scrum-certification-training INFO  setup:orders_page.py:30 Country Set to: GB INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:43 Payment Page is not Loaded INFO  setup:orders_page.py:44 url opend for payment is : https://www.simplilearn.com/secure/checkout/details/error?authtoken=39893624269a1142783e6261bb9f1f5017a3f975e3b3fba6cf45aa049524ecf6 INFO  setup:orders_page.py:54 clicked on Enroll Now button again INFO  setup:orders_page.py:59 Payment Page is not Loaded INFO  setup:orders_page.py:60 url opend for paymnent is : https://www.simplilearn.com/secure/checkout/details/error?authtoken=7f6a95aec9b85b3c9c33ef35588eae4fb0f8a6772576723d5da164e77914a80a ERROR  setup:selenium_helper.py:61 Message: WARNING  setup:selenium_helper.py:62 the locator ('xpath', "//div[@id='ssvcApp']//div[contains(text(), 'Cart Summary')][contains(@class,'active_heading')]") on url https://www.simplilearn.com/secure/checkout/details/error?authtoken=7f6a95aec9b85b3c9c33ef35588eae4fb0f8a6772576723d5da164e77914a80a is not visible INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ('Failed to Load Cart Page',) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: 7f6a95aec9b85b3c9c33ef35588eae4fb0f8a6772576723d5da164e77914a80a INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:28:{s:2:"id";s:1:"4";s:4:"name";s:50:"Certified ScrumMaster<sup>®</sup> (CSM) Classroom";s:11:"description";s:4:" - 1";s:5:"price";s:6:"549.00";s:9:"basePrice";s:3:"549";s:19:"display_total_price";s:6:"549.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"1";s:10:"workshopId";s:7:"1740362";s:5:"venue";s:3:"TBD";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:40:"Certified ScrumMaster<sup>®</sup> (CSM)";s:11:"billingType";i:1;s:7:"img_url";s:77:"https://www.simplilearn.com/ice9/course_images/icons/AGILE-AND-SCRUM-CSM.svgz";s:10:"course_url";s:43:"/agile-and-scrum/csm-certification-training";s:17:"training_type_txt";s:9:"Classroom";s:4:"from";s:10:"2023-05-04";s:2:"to";s:10:"2023-05-05";s:4:"days";i:2;s:9:"isExpired";i:0;s:6:"isSold";i:0;s:13:"workshopDates";N;s:16:"primary_label_id";s:1:"9";s:18:"primary_label_name";s:15:"Agile and Scrum";s:12:"cateforyInfo";a:1:{i:9;s:15:"Agile and Scrum";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+1-123456789'}] INFO  setup:test_orders_and_payment_flow.py:134 SQL DATA in JSON format: {'id': '4', 'name': 'Certified ScrumMaster (CSM) Classroom', 'description': ' - 1', 'price': '549.00', 'basePrice': '549', 'display_total_price': '549.00', 'quantity': 'isEarlyBird', 'type': 'classroom', 'trainingType_id': '1', 'workshopId': '1740362', 'venue': 'TBD', 'productTypeId': '1', 'productTypeName': 'course', 'actual_name': 'Certified ScrumMaster (CSM)', 'img_url': 'https://www.simplilearn.com/ice9/course_images/icons/AGILE-AND-SCRUM-CSM.svgz', 'course_url': '/agile-and-scrum/csm-certification-training', 'training_type_txt': 'Classroom', 'from': '2023-05-04', 'to': '2023-05-05', 'days': 'isExpired', 'isSold': 'workshopDates', 'primary_label_id': '9', 'primary_label_name': 'Agile and Scrum'} ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 137, in test_Orders_and_Payment_Flow_certification for i in course_data[1][1]: IndexError: tuple index out of range
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[M] 99.79
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x00000274411025B0>
value = 'M', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/cyber-security/cisa-certification-training INFO  setup:orders_page.py:30 Country Set to: GB INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'CISA®', 'course_type': 'Online Bootcamp', 'base_price': '£ 2,799.00', 'final_price': '2,799.00'}, (['Credit Card', 'PayPal'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: fe3722edca97d18eefb7c1017891959b06a84fa9118bc898d2171eea1fc4f6a5 INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"32";s:4:"name";s:45:"CISA<sup>®</sup> Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:7:"2799.00";s:9:"basePrice";s:9:"2799.0000";s:19:"display_total_price";s:8:"2,799.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:2:"90";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:17:"CISA<sup>®</sup>";s:7:"priceId";s:4:"9124";s:11:"billingType";i:1;s:7:"img_url";s:67:"https://www.simplilearn.com/ice9/course_images/icons/ITSecCISA.svgz";s:10:"course_url";s:43:"/cyber-security/cisa-certification-training";s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:1:"3";s:18:"primary_label_name";s:14:"Cyber Security";s:12:"cateforyInfo";a:1:{i:3;s:14:"Cyber Security";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+44-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 637 (char 636)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[N] 100.05
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x0000027441102670>
value = 'N', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/cyber-security/cissp-certification-training INFO  setup:orders_page.py:30 Country Set to: GB INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'CISSP®', 'course_type': 'Online Self Learning', 'base_price': '£ 2,099.00', 'final_price': '2,099.00'}, (['Credit Card', 'PayPal'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: a0177883b427edc2163f78194a553d2036760b2d6846423067f1ef2b25433465 INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"34";s:4:"name";s:39:"CISSP<sup>®</sup> Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:7:"2099.00";s:9:"basePrice";s:15:"2099.0000000000";s:19:"display_total_price";s:8:"2,099.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"2";s:10:"accessDays";s:3:"180";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:18:"CISSP<sup>®</sup>";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:68:"https://www.simplilearn.com/ice9/course_images/icons/ITSecCISSP.svgz";s:10:"course_url";s:44:"/cyber-security/cissp-certification-training";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:1:"3";s:18:"primary_label_name";s:14:"Cyber Security";s:12:"cateforyInfo";a:1:{i:3;s:14:"Cyber Security";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+44-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 627 (char 626)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[O] 100.65
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x0000027441102730>
value = 'O', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/big-data-and-analytics/big-data-and-hadoop-training INFO  setup:orders_page.py:30 Country Set to: GB INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'Big Data Hadoop and Spark Developer', 'course_type': 'Online Self Learning', 'base_price': '£ 969.00', 'final_price': '969.00'}, (['Credit Card', 'PayPal'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: c785c432b564a8970e18e11e878ba67b66cc5fa933b5a5a454f98e2f52ea2027 INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"15";s:4:"name";s:56:"Big Data Hadoop and Spark Developer Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:6:"969.00";s:9:"basePrice";s:8:"969.0000";s:19:"display_total_price";s:6:"969.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"2";s:10:"accessDays";s:3:"180";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:35:"Big Data Hadoop and Spark Developer";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:96:"https://www.simplilearn.com/ice9/course_images/icons/Big-Data_Big-Data-and-Hadoop-Developer.svgz";s:10:"course_url";s:52:"/big-data-and-analytics/big-data-and-hadoop-training";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:2:"35";s:18:"primary_label_name";s:8:"Big Data";s:12:"cateforyInfo";a:2:{i:35;s:8:"Big Data";i:16;s:18:"Big Data Analytics";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+44-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 708 (char 707)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[R] 99.92
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x0000027441102970>
value = 'R', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/cyber-security/cisa-certification-training INFO  setup:orders_page.py:30 Country Set to: AU INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'CISA®', 'course_type': 'Online Bootcamp', 'base_price': 'A$ 3,799.00', 'final_price': '3,799.00'}, (['Credit Card', 'PayPal'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: ddecb5ca96187f9a16e600b0b471af9cd4e7fd408f83c25d65e78da1eb3205fa INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"32";s:4:"name";s:45:"CISA<sup>®</sup> Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:7:"3799.00";s:9:"basePrice";s:9:"3799.0000";s:19:"display_total_price";s:8:"3,799.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:2:"90";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:17:"CISA<sup>®</sup>";s:7:"priceId";s:4:"9819";s:11:"billingType";i:1;s:7:"img_url";s:67:"https://www.simplilearn.com/ice9/course_images/icons/ITSecCISA.svgz";s:10:"course_url";s:43:"/cyber-security/cisa-certification-training";s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:1:"3";s:18:"primary_label_name";s:14:"Cyber Security";s:12:"cateforyInfo";a:1:{i:3;s:14:"Cyber Security";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+61-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 637 (char 636)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[S] 100.36
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x0000027441102A30>
value = 'S', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/cyber-security/cissp-certification-training INFO  setup:orders_page.py:30 Country Set to: AU INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'CISSP®', 'course_type': 'Online Self Learning', 'base_price': 'A$ 2,689.00', 'final_price': '2,689.00'}, (['Credit Card', 'PayPal'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: 3cc696c682acfcfd6069950d1a8dc9d4341f566258f7e1a4883d428badbb78e4 INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"34";s:4:"name";s:39:"CISSP<sup>®</sup> Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:7:"2689.00";s:9:"basePrice";s:15:"2689.0000000000";s:19:"display_total_price";s:8:"2,689.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"2";s:10:"accessDays";s:3:"180";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:18:"CISSP<sup>®</sup>";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:68:"https://www.simplilearn.com/ice9/course_images/icons/ITSecCISSP.svgz";s:10:"course_url";s:44:"/cyber-security/cissp-certification-training";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:1:"3";s:18:"primary_label_name";s:14:"Cyber Security";s:12:"cateforyInfo";a:1:{i:3;s:14:"Cyber Security";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+61-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 627 (char 626)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[T] 99.79
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x0000027441102AF0>
value = 'T', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/big-data-and-analytics/big-data-and-hadoop-training INFO  setup:orders_page.py:30 Country Set to: AU INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'Big Data Hadoop and Spark Developer', 'course_type': 'Online Self Learning', 'base_price': 'A$ 1,125.00', 'final_price': '1,125.00'}, (['Credit Card', 'PayPal'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: 80d98ba639f290c8b585017091385c660a27cd4e944b04764cbe53c7dacfe4da INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"15";s:4:"name";s:56:"Big Data Hadoop and Spark Developer Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:7:"1125.00";s:9:"basePrice";s:15:"1125.0000000000";s:19:"display_total_price";s:8:"1,125.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"2";s:10:"accessDays";s:3:"180";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:35:"Big Data Hadoop and Spark Developer";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:96:"https://www.simplilearn.com/ice9/course_images/icons/Big-Data_Big-Data-and-Hadoop-Developer.svgz";s:10:"course_url";s:52:"/big-data-and-analytics/big-data-and-hadoop-training";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:2:"35";s:18:"primary_label_name";s:8:"Big Data";s:12:"cateforyInfo";a:2:{i:35;s:8:"Big Data";i:16;s:18:"Big Data Analytics";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+61-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 718 (char 717)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[U] 203.24
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x0000027441102BB0>
value = 'U', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/agile-and-scrum/agile-and-scrum-certification-training INFO  setup:orders_page.py:30 Country Set to: DE INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:43 Payment Page is not Loaded INFO  setup:orders_page.py:44 url opend for payment is : https://www.simplilearn.com/secure/checkout/details/error?authtoken=7d524dd8cee00b95fc12407a550c11c08a2e364e8d4c20ae17f4a0e35449e132 INFO  setup:orders_page.py:54 clicked on Enroll Now button again INFO  setup:orders_page.py:59 Payment Page is not Loaded INFO  setup:orders_page.py:60 url opend for paymnent is : https://www.simplilearn.com/secure/checkout/details/error?authtoken=9e0283494551fa6fb312e26328ca9bac00076167676bb5f9ca69d24be08eccfa ERROR  setup:selenium_helper.py:61 Message: WARNING  setup:selenium_helper.py:62 the locator ('xpath', "//div[@id='ssvcApp']//div[contains(text(), 'Cart Summary')][contains(@class,'active_heading')]") on url https://www.simplilearn.com/secure/checkout/details/error?authtoken=9e0283494551fa6fb312e26328ca9bac00076167676bb5f9ca69d24be08eccfa is not visible INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ('Failed to Load Cart Page',) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: 9e0283494551fa6fb312e26328ca9bac00076167676bb5f9ca69d24be08eccfa INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:28:{s:2:"id";s:1:"4";s:4:"name";s:50:"Certified ScrumMaster<sup>®</sup> (CSM) Classroom";s:11:"description";s:4:" - 1";s:5:"price";s:6:"599.00";s:9:"basePrice";s:3:"599";s:19:"display_total_price";s:6:"599.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"1";s:10:"workshopId";s:7:"1740369";s:5:"venue";s:3:"TBD";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:40:"Certified ScrumMaster<sup>®</sup> (CSM)";s:11:"billingType";i:1;s:7:"img_url";s:77:"https://www.simplilearn.com/ice9/course_images/icons/AGILE-AND-SCRUM-CSM.svgz";s:10:"course_url";s:43:"/agile-and-scrum/csm-certification-training";s:17:"training_type_txt";s:9:"Classroom";s:4:"from";s:10:"2023-05-04";s:2:"to";s:10:"2023-05-05";s:4:"days";i:2;s:9:"isExpired";i:0;s:6:"isSold";i:0;s:13:"workshopDates";N;s:16:"primary_label_id";s:1:"9";s:18:"primary_label_name";s:15:"Agile and Scrum";s:12:"cateforyInfo";a:1:{i:9;s:15:"Agile and Scrum";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+61-123456789'}] INFO  setup:test_orders_and_payment_flow.py:134 SQL DATA in JSON format: {'id': '4', 'name': 'Certified ScrumMaster (CSM) Classroom', 'description': ' - 1', 'price': '599.00', 'basePrice': '599', 'display_total_price': '599.00', 'quantity': 'isEarlyBird', 'type': 'classroom', 'trainingType_id': '1', 'workshopId': '1740369', 'venue': 'TBD', 'productTypeId': '1', 'productTypeName': 'course', 'actual_name': 'Certified ScrumMaster (CSM)', 'img_url': 'https://www.simplilearn.com/ice9/course_images/icons/AGILE-AND-SCRUM-CSM.svgz', 'course_url': '/agile-and-scrum/csm-certification-training', 'training_type_txt': 'Classroom', 'from': '2023-05-04', 'to': '2023-05-05', 'days': 'isExpired', 'isSold': 'workshopDates', 'primary_label_id': '9', 'primary_label_name': 'Agile and Scrum'} ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 137, in test_Orders_and_Payment_Flow_certification for i in course_data[1][1]: IndexError: tuple index out of range
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[W] 97.94
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x0000027441102D30>
value = 'W', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/cyber-security/cisa-certification-training INFO  setup:orders_page.py:30 Country Set to: DE INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'CISA®', 'course_type': 'Online Bootcamp', 'base_price': '€ 2,799.00', 'final_price': '2,799.00'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: fc464ed947eaa42dd9338a87b972779cb64128d53c92af68b9eda74d9443fdb9 INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"32";s:4:"name";s:45:"CISA<sup>®</sup> Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:7:"2799.00";s:9:"basePrice";s:9:"2799.0000";s:19:"display_total_price";s:8:"2,799.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:2:"90";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:17:"CISA<sup>®</sup>";s:7:"priceId";s:4:"9124";s:11:"billingType";i:1;s:7:"img_url";s:67:"https://www.simplilearn.com/ice9/course_images/icons/ITSecCISA.svgz";s:10:"course_url";s:43:"/cyber-security/cisa-certification-training";s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:1:"3";s:18:"primary_label_name";s:14:"Cyber Security";s:12:"cateforyInfo";a:1:{i:3;s:14:"Cyber Security";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+49-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 637 (char 636)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[X] 102.83
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x0000027441102DF0>
value = 'X', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/cyber-security/cissp-certification-training INFO  setup:orders_page.py:30 Country Set to: DE INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'CISSP®', 'course_type': 'Online Self Learning', 'base_price': '€ 2,099.00', 'final_price': '2,099.00'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: 9e1ef6e88fafa1e11ccea23c6286d286ed475b5562cf99772b8e64eb09cf2648 INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"34";s:4:"name";s:39:"CISSP<sup>®</sup> Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:7:"2099.00";s:9:"basePrice";s:15:"2099.0000000000";s:19:"display_total_price";s:8:"2,099.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"2";s:10:"accessDays";s:3:"180";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:18:"CISSP<sup>®</sup>";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:68:"https://www.simplilearn.com/ice9/course_images/icons/ITSecCISSP.svgz";s:10:"course_url";s:44:"/cyber-security/cissp-certification-training";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:1:"3";s:18:"primary_label_name";s:14:"Cyber Security";s:12:"cateforyInfo";a:1:{i:3;s:14:"Cyber Security";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+49-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 627 (char 626)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[Y] 99.06
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x0000027441102EB0>
value = 'Y', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/big-data-and-analytics/big-data-and-hadoop-training INFO  setup:orders_page.py:30 Country Set to: DE INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'Big Data Hadoop and Spark Developer', 'course_type': 'Online Self Learning', 'base_price': '€ 749.00', 'final_price': '749.00'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: 4ad27ad65b55a9debd842d3eafb5ff84803d4569feae6f956d2dc1ed176559e4 INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"15";s:4:"name";s:56:"Big Data Hadoop and Spark Developer Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:6:"749.00";s:9:"basePrice";s:8:"749.0000";s:19:"display_total_price";s:6:"749.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"2";s:10:"accessDays";s:3:"180";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:35:"Big Data Hadoop and Spark Developer";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:96:"https://www.simplilearn.com/ice9/course_images/icons/Big-Data_Big-Data-and-Hadoop-Developer.svgz";s:10:"course_url";s:52:"/big-data-and-analytics/big-data-and-hadoop-training";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:2:"35";s:18:"primary_label_name";s:8:"Big Data";s:12:"cateforyInfo";a:2:{i:35;s:8:"Big Data";i:16;s:18:"Big Data Analytics";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+49-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 708 (char 707)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[AB] 97.88
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x000002744110E130>
value = 'AB', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/cyber-security/cisa-certification-training INFO  setup:orders_page.py:30 Country Set to: SG INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'CISA®', 'course_type': 'Online Bootcamp', 'base_price': '$ 2,799.00', 'final_price': '3,022.92'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: 389a2e37750d5e735471afa4d611195d8658474f5d67602a47e470fbacad862d INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"32";s:4:"name";s:45:"CISA<sup>®</sup> Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:7:"3022.92";s:9:"basePrice";s:9:"2799.0000";s:19:"display_total_price";s:8:"2,799.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:2:"90";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:17:"CISA<sup>®</sup>";s:7:"priceId";s:4:"9122";s:11:"billingType";i:1;s:7:"img_url";s:67:"https://www.simplilearn.com/ice9/course_images/icons/ITSecCISA.svgz";s:10:"course_url";s:43:"/cyber-security/cisa-certification-training";s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:1:"3";s:18:"primary_label_name";s:14:"Cyber Security";s:12:"cateforyInfo";a:1:{i:3;s:14:"Cyber Security";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+65-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 637 (char 636)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[AC] 98.53
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x000002744110E1F0>
value = 'AC', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/cyber-security/cissp-certification-training INFO  setup:orders_page.py:30 Country Set to: SG INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'CISSP®', 'course_type': 'Online Self Learning', 'base_price': '$ 2,099.00', 'final_price': '2,266.92'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: d5bd7647f0a071b7cdbf3922759136e994837d2d4adae8141cb0b9f90ab73b9b INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"34";s:4:"name";s:39:"CISSP<sup>®</sup> Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:7:"2266.92";s:9:"basePrice";s:15:"2099.0000000000";s:19:"display_total_price";s:8:"2,099.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"2";s:10:"accessDays";s:3:"180";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:18:"CISSP<sup>®</sup>";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:68:"https://www.simplilearn.com/ice9/course_images/icons/ITSecCISSP.svgz";s:10:"course_url";s:44:"/cyber-security/cissp-certification-training";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:1:"3";s:18:"primary_label_name";s:14:"Cyber Security";s:12:"cateforyInfo";a:1:{i:3;s:14:"Cyber Security";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+65-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 627 (char 626)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[AD] 98.54
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x000002744110E2B0>
value = 'AD', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/big-data-and-analytics/big-data-and-hadoop-training INFO  setup:orders_page.py:30 Country Set to: SG INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'Big Data Hadoop and Spark Developer', 'course_type': 'Online Self Learning', 'base_price': '$ 748.00', 'final_price': '807.84'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: 263686de0676bd198753a1511443d04b7f431094059c7faf51db46d02c1dba03 INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"15";s:4:"name";s:56:"Big Data Hadoop and Spark Developer Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:6:"807.84";s:9:"basePrice";s:8:"748.0000";s:19:"display_total_price";s:6:"748.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"2";s:10:"accessDays";s:3:"180";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:35:"Big Data Hadoop and Spark Developer";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:96:"https://www.simplilearn.com/ice9/course_images/icons/Big-Data_Big-Data-and-Hadoop-Developer.svgz";s:10:"course_url";s:52:"/big-data-and-analytics/big-data-and-hadoop-training";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:2:"35";s:18:"primary_label_name";s:8:"Big Data";s:12:"cateforyInfo";a:2:{i:35;s:8:"Big Data";i:16;s:18:"Big Data Analytics";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+65-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 708 (char 707)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[AG] 99.17
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x000002744110E4F0>
value = 'AG', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/cyber-security/cisa-certification-training INFO  setup:orders_page.py:30 Country Set to: AE INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'CISA®', 'course_type': 'Online Bootcamp', 'base_price': '$ 2,799.00', 'final_price': '2,799.00'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: b85999f88793de57d617d4ff8ceafe6af3d3ee8090dbe735c9db4017588cab7d INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"32";s:4:"name";s:45:"CISA<sup>®</sup> Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:7:"2799.00";s:9:"basePrice";s:9:"2799.0000";s:19:"display_total_price";s:8:"2,799.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:2:"90";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:17:"CISA<sup>®</sup>";s:7:"priceId";s:4:"9127";s:11:"billingType";i:1;s:7:"img_url";s:67:"https://www.simplilearn.com/ice9/course_images/icons/ITSecCISA.svgz";s:10:"course_url";s:43:"/cyber-security/cisa-certification-training";s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:1:"3";s:18:"primary_label_name";s:14:"Cyber Security";s:12:"cateforyInfo";a:1:{i:3;s:14:"Cyber Security";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+971-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 637 (char 636)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[AH] 99.07
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x000002744110E5B0>
value = 'AH', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/cyber-security/cissp-certification-training INFO  setup:orders_page.py:30 Country Set to: AE INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'CISSP®', 'course_type': 'Online Self Learning', 'base_price': '$ 2,099.00', 'final_price': '2,099.00'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: 927913a6a785f778dfb5d3505119d1bf4339c6000ce4a4999e95b7574dc6a99a INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"34";s:4:"name";s:39:"CISSP<sup>®</sup> Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:7:"2099.00";s:9:"basePrice";s:15:"2099.0000000000";s:19:"display_total_price";s:8:"2,099.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"2";s:10:"accessDays";s:3:"180";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:18:"CISSP<sup>®</sup>";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:68:"https://www.simplilearn.com/ice9/course_images/icons/ITSecCISSP.svgz";s:10:"course_url";s:44:"/cyber-security/cissp-certification-training";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:1:"3";s:18:"primary_label_name";s:14:"Cyber Security";s:12:"cateforyInfo";a:1:{i:3;s:14:"Cyber Security";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+971-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 627 (char 626)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[AI] 98.99
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x000002744110E670>
value = 'AI', initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0000","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", certification_program_course_read_csv())
def test_Orders_and_Payment_Flow_certification(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
url_count = self._count_url_txt_file_subdomain('Orders_and_Payment_Flow_Certification.txt')
logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_certification_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['common_button_enroll_now_certificaton'],10):
course_data = None
self.pg_orders.click_enroll_now_certification(url_value)
course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')


message = self.verify_mySQL_data_certification(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Certification Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'Certification Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][1],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:190: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/big-data-and-analytics/big-data-and-hadoop-training INFO  setup:orders_page.py:30 Country Set to: AE INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'Big Data Hadoop and Spark Developer', 'course_type': 'Online Self Learning', 'base_price': '$ 749.00', 'final_price': '749.00'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: de09758de34d5eec02a0748f8b390e1bfb6d57e59fdd0909d51b55853ec41473 INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:24:{s:2:"id";s:2:"15";s:4:"name";s:56:"Big Data Hadoop and Spark Developer Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:6:"749.00";s:9:"basePrice";s:8:"749.0000";s:19:"display_total_price";s:6:"749.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"2";s:10:"accessDays";s:3:"180";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:35:"Big Data Hadoop and Spark Developer";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:96:"https://www.simplilearn.com/ice9/course_images/icons/Big-Data_Big-Data-and-Hadoop-Developer.svgz";s:10:"course_url";s:52:"/big-data-and-analytics/big-data-and-hadoop-training";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:2:"35";s:18:"primary_label_name";s:8:"Big Data";s:12:"cateforyInfo";a:2:{i:35;s:8:"Big Data";i:16;s:18:"Big Data Analytics";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+971-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:168 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 133, in test_Orders_and_Payment_Flow_certification sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 266, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 708 (char 707)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[A] 104.19
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744110ECA0>, value = 'A'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
------------------------------Captured stderr call------------------------------
--- Logging error --- Traceback (most recent call last): File "c:\users\qateam\appdata\local\programs\python\python38\lib\logging\__init__.py", line 1084, in emit stream.write(msg + self.terminator) File "c:\users\qateam\appdata\local\programs\python\python38\lib\encodings\cp1252.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\u20b9' in position 160: character maps to <undefined> Call stack: File "c:\users\qateam\appdata\local\programs\python\python38\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File "c:\users\qateam\appdata\local\programs\python\python38\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "C:\Users\qateam\AppData\Local\Programs\Python\Python38\Scripts\pytest.exe\__main__.py", line 7, in <module> sys.exit(console_main()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\config\__init__.py", line 190, in console_main code = main() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\config\__init__.py", line 167, in main ret: Union[ExitCode, int] = config.hook.pytest_cmdline_main( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 317, in pytest_cmdline_main return wrap_session(config, _main) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 270, in wrap_session session.exitstatus = doit(config, session) or 0 File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 324, in _main config.hook.pytest_runtestloop(session=session) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 349, in pytest_runtestloop item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 112, in pytest_runtest_protocol runtestprotocol(item, nextitem=nextitem) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 131, in runtestprotocol reports.append(call_and_report(item, "call", log)) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 220, in call_and_report call = call_runtest_hook(item, when, **kwds) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 259, in call_runtest_hook return CallInfo.from_call( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 339, in from_call result: Optional[TResult] = func() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 260, in <lambda> lambda: ihook(item=item, **kwds), when=when, reraise=reraise File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 167, in pytest_runtest_call item.runtest() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\python.py", line 1789, in runtest self.ihook.pytest_pyfunc_call(pyfuncitem=self) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\python.py", line 195, in pytest_pyfunc_call result = testfunction(**testargs) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 488, in test_Orders_and_Payment_Flow_masters_program logging.info(f"course_data: {course_data}") Message: "course_data: ({'course_name': 'Full Stack Web Developer - MEAN Stack', 'course_type': 'Online Bootcamp', 'base_price': '₹ 45,762.00', 'final_price': '53,999.16'}, (['Credit Card', 'Debit Card', 'Net Banking', 'UPI', 'EMI', 'ShopSe EMI', 'CCAvenue'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'debitcard': 'All option clickable and Payment CTA appearing '}, {'net_banking': 'All option clickable and Payment CTA appearing '}, {'UPI': 'All option clickable and Payment CTA appearing '}, {'EMI': 'All option clickable and Payment CTA appearing '}, {'CCAvenue': 'All option clickable and Payment CTA appearing '}, {'ShopSE EMI': 'All option clickable and Payment CTA appearing '}]))" Arguments: ()
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/full-stack-web-developer-mean-stack-certification-training INFO  setup:orders_page.py:30 Country Set to: IN INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:345 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Full Stack Web Developer - MEAN Stack', 'course_type': 'Online Bootcamp', 'base_price': '₹ 45,762.00', 'final_price': '53,999.16'}, (['Credit Card', 'Debit Card', 'Net Banking', 'UPI', 'EMI', 'ShopSe EMI', 'CCAvenue'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'debitcard': 'All option clickable and Payment CTA appearing '}, {'net_banking': 'All option clickable and Payment CTA appearing '}, {'UPI': 'All option clickable and Payment CTA appearing '}, {'EMI': 'All option clickable and Payment CTA appearing '}, {'CCAvenue': 'All option clickable and Payment CTA appearing '}, {'ShopSE EMI': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: 83abfd04c4438d728172feaea84841d6edfa383a4f71e3c5913fa80b5d199893 INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:34:{s:2:"id";s:3:"105";s:4:"name";s:65:"Full Stack Web Developer - MEAN Stack Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:8:"53999.16";s:9:"basePrice";s:5:"45762";s:19:"display_total_price";s:9:"45,762.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:37:"Full Stack Web Developer - MEAN Stack";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:83:"https://www.simplilearn.com/ice9/course_images/bundle313x225/mean-stack-master.svgz";s:10:"course_url";N;s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:8:"cohortId";s:24:"63c2d0492b22261dd54ecdd1";s:14:"welcomeClassId";s:24:"63c2d0ff2b22261dd54ecddb";s:10:"cohortName";s:25:"MS MEAN JUN 2023 Cohort 1";s:21:"welcomeClassStartDate";i:1684348200;s:15:"cohortStartDate";i:1685799000;s:13:"cohortEndDate";i:1698514200;s:25:"welcomeClassStartDateUser";i:1684418400;s:19:"cohortStartDateUser";i:1685867400;s:17:"cohortEndDateUser";i:1698597000;s:16:"primary_label_id";s:2:"25";s:18:"primary_label_name";s:20:"Software Development";s:12:"cateforyInfo";a:1:{i:25;s:20:"Software Development";}s:15:"program_version";i:1;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+91-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 924 (char 923)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[B] 105.24
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744110ED60>, value = 'B'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
------------------------------Captured stderr call------------------------------
--- Logging error --- Traceback (most recent call last): File "c:\users\qateam\appdata\local\programs\python\python38\lib\logging\__init__.py", line 1084, in emit stream.write(msg + self.terminator) File "c:\users\qateam\appdata\local\programs\python\python38\lib\encodings\cp1252.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\u20b9' in position 157: character maps to <undefined> Call stack: File "c:\users\qateam\appdata\local\programs\python\python38\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File "c:\users\qateam\appdata\local\programs\python\python38\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "C:\Users\qateam\AppData\Local\Programs\Python\Python38\Scripts\pytest.exe\__main__.py", line 7, in <module> sys.exit(console_main()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\config\__init__.py", line 190, in console_main code = main() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\config\__init__.py", line 167, in main ret: Union[ExitCode, int] = config.hook.pytest_cmdline_main( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 317, in pytest_cmdline_main return wrap_session(config, _main) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 270, in wrap_session session.exitstatus = doit(config, session) or 0 File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 324, in _main config.hook.pytest_runtestloop(session=session) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 349, in pytest_runtestloop item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 112, in pytest_runtest_protocol runtestprotocol(item, nextitem=nextitem) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 131, in runtestprotocol reports.append(call_and_report(item, "call", log)) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 220, in call_and_report call = call_runtest_hook(item, when, **kwds) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 259, in call_runtest_hook return CallInfo.from_call( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 339, in from_call result: Optional[TResult] = func() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 260, in <lambda> lambda: ihook(item=item, **kwds), when=when, reraise=reraise File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 167, in pytest_runtest_call item.runtest() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\python.py", line 1789, in runtest self.ihook.pytest_pyfunc_call(pyfuncitem=self) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\python.py", line 195, in pytest_pyfunc_call result = testfunction(**testargs) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 488, in test_Orders_and_Payment_Flow_masters_program logging.info(f"course_data: {course_data}") Message: "course_data: ({'course_name': 'Automation Testing Masters Program', 'course_type': 'Online Bootcamp', 'base_price': '₹ 45,762.00', 'final_price': '53,999.16'}, (['Credit Card', 'Debit Card', 'Net Banking', 'UPI', 'EMI', 'ShopSe EMI', 'CCAvenue'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'debitcard': 'All option clickable and Payment CTA appearing '}, {'net_banking': 'All option clickable and Payment CTA appearing '}, {'UPI': 'All option clickable and Payment CTA appearing '}, {'EMI': 'All option clickable and Payment CTA appearing '}, {'CCAvenue': 'All option clickable and Payment CTA appearing '}, {'ShopSE EMI': 'All option clickable and Payment CTA appearing '}]))" Arguments: ()
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/automation-testing-masters-program-certification-training-course INFO  setup:orders_page.py:30 Country Set to: IN INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:345 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Automation Testing Masters Program', 'course_type': 'Online Bootcamp', 'base_price': '₹ 45,762.00', 'final_price': '53,999.16'}, (['Credit Card', 'Debit Card', 'Net Banking', 'UPI', 'EMI', 'ShopSe EMI', 'CCAvenue'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'debitcard': 'All option clickable and Payment CTA appearing '}, {'net_banking': 'All option clickable and Payment CTA appearing '}, {'UPI': 'All option clickable and Payment CTA appearing '}, {'EMI': 'All option clickable and Payment CTA appearing '}, {'CCAvenue': 'All option clickable and Payment CTA appearing '}, {'ShopSE EMI': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: 96178b5d7a8757443c869895bb568960d5c7583ad8e692282f8d90dbf93af2ea INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:34:{s:2:"id";s:3:"112";s:4:"name";s:62:"Automation Testing Masters Program Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:8:"53999.16";s:9:"basePrice";s:5:"45762";s:19:"display_total_price";s:9:"45,762.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:34:"Automation Testing Masters Program";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:105:"https://www.simplilearn.com/ice9/course_images/bundle313x225/Automation-Testing-Masters-Program-icon.svgz";s:10:"course_url";N;s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:8:"cohortId";s:24:"641c32c32d85af2fc6b0a0ff";s:14:"welcomeClassId";s:24:"64478777ffb4bf3181a326a0";s:10:"cohortName";s:24:"MS ATE MAY 2023 Cohort 1";s:21:"welcomeClassStartDate";i:1683657000;s:15:"cohortStartDate";i:1683984600;s:13:"cohortEndDate";i:1698773400;s:25:"welcomeClassStartDateUser";i:1683725400;s:19:"cohortStartDateUser";i:1684053000;s:17:"cohortEndDateUser";i:1698856200;s:16:"primary_label_id";s:2:"25";s:18:"primary_label_name";s:20:"Software Development";s:12:"cateforyInfo";a:1:{i:25;s:20:"Software Development";}s:15:"program_version";i:2;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+91-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 939 (char 938)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[D] 62.58
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744110EEE0>, value = 'D'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
------------------------------Captured stderr call------------------------------
--- Logging error --- Traceback (most recent call last): File "c:\users\qateam\appdata\local\programs\python\python38\lib\logging\__init__.py", line 1084, in emit stream.write(msg + self.terminator) File "c:\users\qateam\appdata\local\programs\python\python38\lib\encodings\cp1252.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\u20b9' in position 151: character maps to <undefined> Call stack: File "c:\users\qateam\appdata\local\programs\python\python38\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File "c:\users\qateam\appdata\local\programs\python\python38\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "C:\Users\qateam\AppData\Local\Programs\Python\Python38\Scripts\pytest.exe\__main__.py", line 7, in <module> sys.exit(console_main()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\config\__init__.py", line 190, in console_main code = main() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\config\__init__.py", line 167, in main ret: Union[ExitCode, int] = config.hook.pytest_cmdline_main( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 317, in pytest_cmdline_main return wrap_session(config, _main) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 270, in wrap_session session.exitstatus = doit(config, session) or 0 File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 324, in _main config.hook.pytest_runtestloop(session=session) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 349, in pytest_runtestloop item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 112, in pytest_runtest_protocol runtestprotocol(item, nextitem=nextitem) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 131, in runtestprotocol reports.append(call_and_report(item, "call", log)) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 220, in call_and_report call = call_runtest_hook(item, when, **kwds) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 259, in call_runtest_hook return CallInfo.from_call( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 339, in from_call result: Optional[TResult] = func() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 260, in <lambda> lambda: ihook(item=item, **kwds), when=when, reraise=reraise File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 167, in pytest_runtest_call item.runtest() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\python.py", line 1789, in runtest self.ihook.pytest_pyfunc_call(pyfuncitem=self) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\python.py", line 195, in pytest_pyfunc_call result = testfunction(**testargs) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 488, in test_Orders_and_Payment_Flow_masters_program logging.info(f"course_data: {course_data}") Message: "course_data: ({'course_name': 'Digital Marketing Specialist', 'course_type': 'Online Bootcamp', 'base_price': '₹ 54,407.00', 'final_price': '64,200.26'}, (['Credit Card', 'Debit Card', 'Net Banking', 'UPI', 'EMI', 'ShopSe EMI', 'CCAvenue'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'debitcard': 'All option clickable and Payment CTA appearing '}, {'net_banking': 'All option clickable and Payment CTA appearing '}, {'UPI': 'All option clickable and Payment CTA appearing '}, {'EMI': 'All option clickable and Payment CTA appearing '}, {'CCAvenue': 'All option clickable and Payment CTA appearing '}, {'ShopSE EMI': 'All option clickable and Payment CTA appearing '}]))" Arguments: ()
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/advanced-digital-marketing-certification-training-course INFO  setup:orders_page.py:30 Country Set to: IN INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:345 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Digital Marketing Specialist', 'course_type': 'Online Bootcamp', 'base_price': '₹ 54,407.00', 'final_price': '64,200.26'}, (['Credit Card', 'Debit Card', 'Net Banking', 'UPI', 'EMI', 'ShopSe EMI', 'CCAvenue'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'debitcard': 'All option clickable and Payment CTA appearing '}, {'net_banking': 'All option clickable and Payment CTA appearing '}, {'UPI': 'All option clickable and Payment CTA appearing '}, {'EMI': 'All option clickable and Payment CTA appearing '}, {'CCAvenue': 'All option clickable and Payment CTA appearing '}, {'ShopSE EMI': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: 3b318c008ebed1a353fe2e852f00c61eb99d49dcdd0abbadcbecaa8d8e266f08 INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:25:{s:2:"id";s:2:"23";s:4:"name";s:49:"Digital Marketing Specialist Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:8:"64200.26";s:9:"basePrice";s:5:"54407";s:19:"display_total_price";s:9:"54,407.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:28:"Digital Marketing Specialist";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:88:"https://www.simplilearn.com/ice9/course_images/bundle313x225/Digital-marketing-head.svgz";s:10:"course_url";s:57:"/advanced-digital-marketing-certification-training-course";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:2:"18";s:18:"primary_label_name";s:17:"Digital Marketing";s:12:"cateforyInfo";a:1:{i:18;s:17:"Digital Marketing";}s:15:"program_version";i:3;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+91-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 702 (char 701)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[E] 109.72
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744110EFA0>, value = 'E'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/full-stack-web-developer-mean-stack-certification-training INFO  setup:orders_page.py:30 Country Set to: US INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Full Stack Web Developer - MEAN Stack', 'course_type': 'Online Bootcamp', 'base_price': '$ 1,499.00', 'final_price': '1,499.00'}, (['Credit Card', 'PayPal', 'Affirm', 'Klarna'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'Affirm': 'All option clickable and Payment CTA appearing '}, {'klarna': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: 3283e5c30937bef6be255732b3f61a540e1b96982f4f3dccb6175f27bb30b295 INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:34:{s:2:"id";s:3:"105";s:4:"name";s:65:"Full Stack Web Developer - MEAN Stack Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:7:"1499.00";s:9:"basePrice";s:4:"1499";s:19:"display_total_price";s:8:"1,499.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:37:"Full Stack Web Developer - MEAN Stack";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:83:"https://www.simplilearn.com/ice9/course_images/bundle313x225/mean-stack-master.svgz";s:10:"course_url";N;s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:8:"cohortId";s:24:"6439410c9983df7081eafceb";s:14:"welcomeClassId";s:24:"643941e0ffb4bf3181906fbe";s:10:"cohortName";s:25:"MS MEAN SEP 2023 Cohort 1";s:21:"welcomeClassStartDate";i:1686681000;s:15:"cohortStartDate";i:1693661400;s:13:"cohortEndDate";i:1708277400;s:25:"welcomeClassStartDateUser";i:1686713400;s:19:"cohortStartDateUser";i:1693692000;s:17:"cohortEndDateUser";i:1708318800;s:16:"primary_label_id";s:2:"25";s:18:"primary_label_name";s:20:"Software Development";s:12:"cateforyInfo";a:1:{i:25;s:20:"Software Development";}s:15:"program_version";i:1;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+1-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 921 (char 920)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[F] 109.96
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744111D0A0>, value = 'F'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/automation-testing-masters-program-certification-training-course INFO  setup:orders_page.py:30 Country Set to: US INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Automation Testing Masters Program', 'course_type': 'Online Bootcamp', 'base_price': '$ 1,499.00', 'final_price': '1,499.00'}, (['Credit Card', 'PayPal', 'Affirm', 'Klarna'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'Affirm': 'All option clickable and Payment CTA appearing '}, {'klarna': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: 66dfceb8b81d494e2c1363584ad0352dfccd2c00f19aa09fbf74ac5497eae305 INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:34:{s:2:"id";s:3:"112";s:4:"name";s:62:"Automation Testing Masters Program Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:7:"1499.00";s:9:"basePrice";s:4:"1499";s:19:"display_total_price";s:8:"1,499.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:34:"Automation Testing Masters Program";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:105:"https://www.simplilearn.com/ice9/course_images/bundle313x225/Automation-Testing-Masters-Program-icon.svgz";s:10:"course_url";N;s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:8:"cohortId";s:24:"641c32c32d85af2fc6b0a0ff";s:14:"welcomeClassId";s:24:"64478777ffb4bf3181a326a0";s:10:"cohortName";s:24:"MS ATE MAY 2023 Cohort 1";s:21:"welcomeClassStartDate";i:1683657000;s:15:"cohortStartDate";i:1683984600;s:13:"cohortEndDate";i:1698773400;s:25:"welcomeClassStartDateUser";i:1683687600;s:19:"cohortStartDateUser";i:1684015200;s:17:"cohortEndDateUser";i:1698818400;s:16:"primary_label_id";s:2:"25";s:18:"primary_label_name";s:20:"Software Development";s:12:"cateforyInfo";a:1:{i:25;s:20:"Software Development";}s:15:"program_version";i:2;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+1-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 936 (char 935)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[H] 68.23
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744111D220>, value = 'H'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/advanced-digital-marketing-certification-training-course INFO  setup:orders_page.py:30 Country Set to: US INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Digital Marketing Specialist', 'course_type': 'Online Bootcamp', 'base_price': '$ 1,649.00', 'final_price': '1,649.00'}, (['Credit Card', 'PayPal', 'Affirm', 'Klarna'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'Affirm': 'All option clickable and Payment CTA appearing '}, {'klarna': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: 385b953b4358fa4a85e0cb1ea217d0281429b96fc4e62d8d1e591c452d9056e7 INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:25:{s:2:"id";s:2:"23";s:4:"name";s:49:"Digital Marketing Specialist Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:7:"1649.00";s:9:"basePrice";s:4:"1649";s:19:"display_total_price";s:8:"1,649.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:28:"Digital Marketing Specialist";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:88:"https://www.simplilearn.com/ice9/course_images/bundle313x225/Digital-marketing-head.svgz";s:10:"course_url";s:57:"/advanced-digital-marketing-certification-training-course";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:2:"18";s:18:"primary_label_name";s:17:"Digital Marketing";s:12:"cateforyInfo";a:1:{i:18;s:17:"Digital Marketing";}s:15:"program_version";i:3;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+1-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 699 (char 698)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[I] 141.26
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744111D2E0>, value = 'I'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/full-stack-web-developer-mean-stack-certification-training INFO  setup:orders_page.py:30 Country Set to: GB INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Full Stack Web Developer - MEAN Stack', 'course_type': 'Online Bootcamp', 'base_price': '£ 1,390.00', 'final_price': '1,390.00'}, (['Credit Card', 'PayPal'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: 74aa870139a5ca293c31380bd65c1d4d1df173aa281604d6f880d353336092bc INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:34:{s:2:"id";s:3:"105";s:4:"name";s:65:"Full Stack Web Developer - MEAN Stack Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:7:"1390.00";s:9:"basePrice";s:4:"1390";s:19:"display_total_price";s:8:"1,390.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:37:"Full Stack Web Developer - MEAN Stack";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:83:"https://www.simplilearn.com/ice9/course_images/bundle313x225/mean-stack-master.svgz";s:10:"course_url";N;s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:8:"cohortId";s:24:"6439410c9983df7081eafceb";s:14:"welcomeClassId";s:24:"643941e0ffb4bf3181906fbe";s:10:"cohortName";s:25:"MS MEAN SEP 2023 Cohort 1";s:21:"welcomeClassStartDate";i:1686681000;s:15:"cohortStartDate";i:1693661400;s:13:"cohortEndDate";i:1708277400;s:25:"welcomeClassStartDateUser";i:1686735000;s:19:"cohortStartDateUser";i:1693713600;s:17:"cohortEndDateUser";i:1708340400;s:16:"primary_label_id";s:2:"25";s:18:"primary_label_name";s:20:"Software Development";s:12:"cateforyInfo";a:1:{i:25;s:20:"Software Development";}s:15:"program_version";i:1;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+1-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 921 (char 920)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[J] 142.43
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744111D3A0>, value = 'J'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/automation-testing-masters-program-certification-training-course INFO  setup:orders_page.py:30 Country Set to: GB INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Automation Testing Masters Program', 'course_type': 'Online Bootcamp', 'base_price': '£ 1,099.00', 'final_price': '1,099.00'}, (['Credit Card', 'PayPal'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: 7c8414dd3347f823a8ba763cb4af64021599124f07565d533c9ff84b1c4477f3 INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:34:{s:2:"id";s:3:"112";s:4:"name";s:62:"Automation Testing Masters Program Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:7:"1099.00";s:9:"basePrice";s:4:"1099";s:19:"display_total_price";s:8:"1,099.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:34:"Automation Testing Masters Program";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:105:"https://www.simplilearn.com/ice9/course_images/bundle313x225/Automation-Testing-Masters-Program-icon.svgz";s:10:"course_url";N;s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:8:"cohortId";s:24:"641c32c32d85af2fc6b0a0ff";s:14:"welcomeClassId";s:24:"64478777ffb4bf3181a326a0";s:10:"cohortName";s:24:"MS ATE MAY 2023 Cohort 1";s:21:"welcomeClassStartDate";i:1683657000;s:15:"cohortStartDate";i:1683984600;s:13:"cohortEndDate";i:1698773400;s:25:"welcomeClassStartDateUser";i:1683709200;s:19:"cohortStartDateUser";i:1684036800;s:17:"cohortEndDateUser";i:1698836400;s:16:"primary_label_id";s:2:"25";s:18:"primary_label_name";s:20:"Software Development";s:12:"cateforyInfo";a:1:{i:25;s:20:"Software Development";}s:15:"program_version";i:2;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+44-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 936 (char 935)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[L] 100.69
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744111D520>, value = 'L'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/advanced-digital-marketing-certification-training-course INFO  setup:orders_page.py:30 Country Set to: GB INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Digital Marketing Specialist', 'course_type': 'Online Bootcamp', 'base_price': '£ 1,049.00', 'final_price': '1,049.00'}, (['Credit Card', 'PayPal'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: 7f8c68b2c721d4cacb2224e95d570c61aaeb5f2771f3770dc044461aaa36c1fb INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:25:{s:2:"id";s:2:"23";s:4:"name";s:49:"Digital Marketing Specialist Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:7:"1049.00";s:9:"basePrice";s:4:"1049";s:19:"display_total_price";s:8:"1,049.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:28:"Digital Marketing Specialist";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:88:"https://www.simplilearn.com/ice9/course_images/bundle313x225/Digital-marketing-head.svgz";s:10:"course_url";s:57:"/advanced-digital-marketing-certification-training-course";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:2:"18";s:18:"primary_label_name";s:17:"Digital Marketing";s:12:"cateforyInfo";a:1:{i:18;s:17:"Digital Marketing";}s:15:"program_version";i:3;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+44-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 699 (char 698)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[M] 143.22
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744111D5E0>, value = 'M'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/full-stack-web-developer-mean-stack-certification-training INFO  setup:orders_page.py:30 Country Set to: AU INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Full Stack Web Developer - MEAN Stack', 'course_type': 'Online Bootcamp', 'base_price': 'A$ 1,605.00', 'final_price': '1,605.00'}, (['Credit Card', 'PayPal'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: ac8430f15a732cf7489004b766637226c6b1d10a22365c4ecd6456c774005ea2 INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:34:{s:2:"id";s:3:"105";s:4:"name";s:65:"Full Stack Web Developer - MEAN Stack Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:7:"1605.00";s:9:"basePrice";s:4:"1605";s:19:"display_total_price";s:8:"1,605.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:37:"Full Stack Web Developer - MEAN Stack";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:83:"https://www.simplilearn.com/ice9/course_images/bundle313x225/mean-stack-master.svgz";s:10:"course_url";N;s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:8:"cohortId";s:24:"6439410c9983df7081eafceb";s:14:"welcomeClassId";s:24:"643941e0ffb4bf3181906fbe";s:10:"cohortName";s:25:"MS MEAN SEP 2023 Cohort 1";s:21:"welcomeClassStartDate";i:1686681000;s:15:"cohortStartDate";i:1693661400;s:13:"cohortEndDate";i:1708277400;s:25:"welcomeClassStartDateUser";i:1686767400;s:19:"cohortStartDateUser";i:1693746000;s:17:"cohortEndDateUser";i:1708380000;s:16:"primary_label_id";s:2:"25";s:18:"primary_label_name";s:20:"Software Development";s:12:"cateforyInfo";a:1:{i:25;s:20:"Software Development";}s:15:"program_version";i:1;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+61-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 921 (char 920)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[N] 142.46
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744111D6A0>, value = 'N'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/automation-testing-masters-program-certification-training-course INFO  setup:orders_page.py:30 Country Set to: AU INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Automation Testing Masters Program', 'course_type': 'Online Bootcamp', 'base_price': 'A$ 1,649.00', 'final_price': '1,649.00'}, (['Credit Card', 'PayPal'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: bf2a853f2cf23eaa20323b48017488ae00dce108c300820373c419b76b14eaa9 INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:34:{s:2:"id";s:3:"112";s:4:"name";s:62:"Automation Testing Masters Program Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:7:"1649.00";s:9:"basePrice";s:4:"1649";s:19:"display_total_price";s:8:"1,649.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:34:"Automation Testing Masters Program";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:105:"https://www.simplilearn.com/ice9/course_images/bundle313x225/Automation-Testing-Masters-Program-icon.svgz";s:10:"course_url";N;s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:8:"cohortId";s:24:"641c32c32d85af2fc6b0a0ff";s:14:"welcomeClassId";s:24:"64478777ffb4bf3181a326a0";s:10:"cohortName";s:24:"MS ATE MAY 2023 Cohort 1";s:21:"welcomeClassStartDate";i:1683657000;s:15:"cohortStartDate";i:1683984600;s:13:"cohortEndDate";i:1698773400;s:25:"welcomeClassStartDateUser";i:1683741600;s:19:"cohortStartDateUser";i:1684069200;s:17:"cohortEndDateUser";i:1698876000;s:16:"primary_label_id";s:2:"25";s:18:"primary_label_name";s:20:"Software Development";s:12:"cateforyInfo";a:1:{i:25;s:20:"Software Development";}s:15:"program_version";i:2;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+61-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 936 (char 935)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[P] 100.77
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744111D820>, value = 'P'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/advanced-digital-marketing-certification-training-course INFO  setup:orders_page.py:30 Country Set to: AU INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Digital Marketing Specialist', 'course_type': 'Online Bootcamp', 'base_price': 'A$ 1,399.00', 'final_price': '1,399.00'}, (['Credit Card', 'PayPal'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: 87429a5d912025043824b44307d4168d0b83f61ef9269a763046543538f1e8a2 INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:25:{s:2:"id";s:2:"23";s:4:"name";s:49:"Digital Marketing Specialist Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:7:"1399.00";s:9:"basePrice";s:4:"1399";s:19:"display_total_price";s:8:"1,399.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:28:"Digital Marketing Specialist";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:88:"https://www.simplilearn.com/ice9/course_images/bundle313x225/Digital-marketing-head.svgz";s:10:"course_url";s:57:"/advanced-digital-marketing-certification-training-course";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:2:"18";s:18:"primary_label_name";s:17:"Digital Marketing";s:12:"cateforyInfo";a:1:{i:18;s:17:"Digital Marketing";}s:15:"program_version";i:3;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+61-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 699 (char 698)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[Q] 141.42
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744111D8E0>, value = 'Q'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/full-stack-web-developer-mean-stack-certification-training INFO  setup:orders_page.py:30 Country Set to: DE INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Full Stack Web Developer - MEAN Stack', 'course_type': 'Online Bootcamp', 'base_price': '€ 1,390.00', 'final_price': '1,390.00'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: 09a348580c13ccdc7c40476f9e00b63751322bfaab8dfdccec05d144da1d91a4 INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:34:{s:2:"id";s:3:"105";s:4:"name";s:65:"Full Stack Web Developer - MEAN Stack Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:7:"1390.00";s:9:"basePrice";s:4:"1390";s:19:"display_total_price";s:8:"1,390.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:37:"Full Stack Web Developer - MEAN Stack";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:83:"https://www.simplilearn.com/ice9/course_images/bundle313x225/mean-stack-master.svgz";s:10:"course_url";N;s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:8:"cohortId";s:24:"6439410c9983df7081eafceb";s:14:"welcomeClassId";s:24:"643941e0ffb4bf3181906fbe";s:10:"cohortName";s:25:"MS MEAN SEP 2023 Cohort 1";s:21:"welcomeClassStartDate";i:1686681000;s:15:"cohortStartDate";i:1693661400;s:13:"cohortEndDate";i:1708277400;s:25:"welcomeClassStartDateUser";i:1686738600;s:19:"cohortStartDateUser";i:1693717200;s:17:"cohortEndDateUser";i:1708344000;s:16:"primary_label_id";s:2:"25";s:18:"primary_label_name";s:20:"Software Development";s:12:"cateforyInfo";a:1:{i:25;s:20:"Software Development";}s:15:"program_version";i:1;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+61-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 921 (char 920)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[R] 140.73
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744111D9A0>, value = 'R'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/automation-testing-masters-program-certification-training-course INFO  setup:orders_page.py:30 Country Set to: DE INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Automation Testing Masters Program', 'course_type': 'Online Bootcamp', 'base_price': '€ 1,099.00', 'final_price': '1,099.00'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: 7e79903e695094882c733b57d847f67154a5b480fed6cd4c105a6c3daeac754e INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:34:{s:2:"id";s:3:"112";s:4:"name";s:62:"Automation Testing Masters Program Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:7:"1099.00";s:9:"basePrice";s:4:"1099";s:19:"display_total_price";s:8:"1,099.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:34:"Automation Testing Masters Program";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:105:"https://www.simplilearn.com/ice9/course_images/bundle313x225/Automation-Testing-Masters-Program-icon.svgz";s:10:"course_url";N;s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:8:"cohortId";s:24:"641c32c32d85af2fc6b0a0ff";s:14:"welcomeClassId";s:24:"64478777ffb4bf3181a326a0";s:10:"cohortName";s:24:"MS ATE MAY 2023 Cohort 1";s:21:"welcomeClassStartDate";i:1683657000;s:15:"cohortStartDate";i:1683984600;s:13:"cohortEndDate";i:1698773400;s:25:"welcomeClassStartDateUser";i:1683712800;s:19:"cohortStartDateUser";i:1684040400;s:17:"cohortEndDateUser";i:1698840000;s:16:"primary_label_id";s:2:"25";s:18:"primary_label_name";s:20:"Software Development";s:12:"cateforyInfo";a:1:{i:25;s:20:"Software Development";}s:15:"program_version";i:2;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+61-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 936 (char 935)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[T] 99.88
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744111DB20>, value = 'T'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/advanced-digital-marketing-certification-training-course INFO  setup:orders_page.py:30 Country Set to: DE INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Digital Marketing Specialist', 'course_type': 'Online Bootcamp', 'base_price': '€ 1,049.00', 'final_price': '1,049.00'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: 0aa52eb3a8763d5970f36db0fd5439f393fadb05748cc9d0f9a3ffc4eea2e724 INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:25:{s:2:"id";s:2:"23";s:4:"name";s:49:"Digital Marketing Specialist Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:7:"1049.00";s:9:"basePrice";s:4:"1049";s:19:"display_total_price";s:8:"1,049.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:28:"Digital Marketing Specialist";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:88:"https://www.simplilearn.com/ice9/course_images/bundle313x225/Digital-marketing-head.svgz";s:10:"course_url";s:57:"/advanced-digital-marketing-certification-training-course";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:2:"18";s:18:"primary_label_name";s:17:"Digital Marketing";s:12:"cateforyInfo";a:1:{i:18;s:17:"Digital Marketing";}s:15:"program_version";i:3;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+49-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 699 (char 698)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[U] 141.93
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744111DBE0>, value = 'U'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/full-stack-web-developer-mean-stack-certification-training INFO  setup:orders_page.py:30 Country Set to: SG INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Full Stack Web Developer - MEAN Stack', 'course_type': 'Online Bootcamp', 'base_price': '$ 1,390.00', 'final_price': '1,501.20'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: f00e42878bdaaef13aebcf8e021738abbffa206e0adc6eea0fe67169b251b652 INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:34:{s:2:"id";s:3:"105";s:4:"name";s:65:"Full Stack Web Developer - MEAN Stack Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:7:"1501.20";s:9:"basePrice";s:4:"1390";s:19:"display_total_price";s:8:"1,390.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:37:"Full Stack Web Developer - MEAN Stack";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:83:"https://www.simplilearn.com/ice9/course_images/bundle313x225/mean-stack-master.svgz";s:10:"course_url";N;s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:8:"cohortId";s:24:"6439410c9983df7081eafceb";s:14:"welcomeClassId";s:24:"643941e0ffb4bf3181906fbe";s:10:"cohortName";s:25:"MS MEAN SEP 2023 Cohort 1";s:21:"welcomeClassStartDate";i:1686681000;s:15:"cohortStartDate";i:1693661400;s:13:"cohortEndDate";i:1708277400;s:25:"welcomeClassStartDateUser";i:1686760200;s:19:"cohortStartDateUser";i:1693738800;s:17:"cohortEndDateUser";i:1708369200;s:16:"primary_label_id";s:2:"25";s:18:"primary_label_name";s:20:"Software Development";s:12:"cateforyInfo";a:1:{i:25;s:20:"Software Development";}s:15:"program_version";i:1;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+65-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 921 (char 920)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[V] 141.67
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744110E820>, value = 'V'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/automation-testing-masters-program-certification-training-course INFO  setup:orders_page.py:30 Country Set to: SG INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Automation Testing Masters Program', 'course_type': 'Online Bootcamp', 'base_price': '$ 1,099.00', 'final_price': '1,186.92'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: 15dff9c2504f1c10eb5a37fc9f9b40a376212827da6a49e4a8c2a74757adf4c5 INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:34:{s:2:"id";s:3:"112";s:4:"name";s:62:"Automation Testing Masters Program Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:7:"1186.92";s:9:"basePrice";s:4:"1099";s:19:"display_total_price";s:8:"1,099.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:34:"Automation Testing Masters Program";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:105:"https://www.simplilearn.com/ice9/course_images/bundle313x225/Automation-Testing-Masters-Program-icon.svgz";s:10:"course_url";N;s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:8:"cohortId";s:24:"641c32c32d85af2fc6b0a0ff";s:14:"welcomeClassId";s:24:"64478777ffb4bf3181a326a0";s:10:"cohortName";s:24:"MS ATE MAY 2023 Cohort 1";s:21:"welcomeClassStartDate";i:1683657000;s:15:"cohortStartDate";i:1683984600;s:13:"cohortEndDate";i:1698773400;s:25:"welcomeClassStartDateUser";i:1683734400;s:19:"cohortStartDateUser";i:1684062000;s:17:"cohortEndDateUser";i:1698865200;s:16:"primary_label_id";s:2:"25";s:18:"primary_label_name";s:20:"Software Development";s:12:"cateforyInfo";a:1:{i:25;s:20:"Software Development";}s:15:"program_version";i:2;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+65-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 936 (char 935)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[X] 100.53
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744111DD90>, value = 'X'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/advanced-digital-marketing-certification-training-course INFO  setup:orders_page.py:30 Country Set to: AE INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Digital Marketing Specialist', 'course_type': 'Online Bootcamp', 'base_price': '$ 1,049.00', 'final_price': '1,049.00'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: 964235c070fd20061f51b5ac4dd9a482f61ee9108ce1b8e199126cb918c48ba4 INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:25:{s:2:"id";s:2:"23";s:4:"name";s:49:"Digital Marketing Specialist Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:7:"1049.00";s:9:"basePrice";s:4:"1049";s:19:"display_total_price";s:8:"1,049.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:28:"Digital Marketing Specialist";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:88:"https://www.simplilearn.com/ice9/course_images/bundle313x225/Digital-marketing-head.svgz";s:10:"course_url";s:57:"/advanced-digital-marketing-certification-training-course";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:2:"18";s:18:"primary_label_name";s:17:"Digital Marketing";s:12:"cateforyInfo";a:1:{i:18;s:17:"Digital Marketing";}s:15:"program_version";i:3;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+65-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 699 (char 698)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[Y] 141.63
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744111DE50>, value = 'Y'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/full-stack-web-developer-mean-stack-certification-training INFO  setup:orders_page.py:30 Country Set to: AE INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Full Stack Web Developer - MEAN Stack', 'course_type': 'Online Bootcamp', 'base_price': '$ 1,390.00', 'final_price': '1,390.00'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: c44ce55a8ad60e9fe4c07e2c6768b68d4d679bef39a5bd85c670a816470daa34 INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:34:{s:2:"id";s:3:"105";s:4:"name";s:65:"Full Stack Web Developer - MEAN Stack Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:7:"1390.00";s:9:"basePrice";s:4:"1390";s:19:"display_total_price";s:8:"1,390.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:37:"Full Stack Web Developer - MEAN Stack";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:83:"https://www.simplilearn.com/ice9/course_images/bundle313x225/mean-stack-master.svgz";s:10:"course_url";N;s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:8:"cohortId";s:24:"6439410c9983df7081eafceb";s:14:"welcomeClassId";s:24:"643941e0ffb4bf3181906fbe";s:10:"cohortName";s:25:"MS MEAN SEP 2023 Cohort 1";s:21:"welcomeClassStartDate";i:1686681000;s:15:"cohortStartDate";i:1693661400;s:13:"cohortEndDate";i:1708277400;s:25:"welcomeClassStartDateUser";i:1686745800;s:19:"cohortStartDateUser";i:1693724400;s:17:"cohortEndDateUser";i:1708354800;s:16:"primary_label_id";s:2:"25";s:18:"primary_label_name";s:20:"Software Development";s:12:"cateforyInfo";a:1:{i:25;s:20:"Software Development";}s:15:"program_version";i:1;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+971-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 921 (char 920)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[Z] 139.11
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x000002744111DF10>, value = 'Z'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/automation-testing-masters-program-certification-training-course INFO  setup:orders_page.py:30 Country Set to: AE INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Automation Testing Masters Program', 'course_type': 'Online Bootcamp', 'base_price': '$ 1,099.00', 'final_price': '1,099.00'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: 3dd23e4b1c7123ed550c8e4ec649b1e7b05298fc00dcb7657affd340aa765be9 INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:34:{s:2:"id";s:3:"112";s:4:"name";s:62:"Automation Testing Masters Program Online Classroom Flexi-Pass";s:11:"description";s:4:" - 1";s:5:"price";s:7:"1099.00";s:9:"basePrice";s:4:"1099";s:19:"display_total_price";s:8:"1,099.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:34:"Automation Testing Masters Program";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:105:"https://www.simplilearn.com/ice9/course_images/bundle313x225/Automation-Testing-Masters-Program-icon.svgz";s:10:"course_url";N;s:17:"training_type_txt";s:27:"Online Classroom Flexi-Pass";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:8:"cohortId";s:24:"641c32c32d85af2fc6b0a0ff";s:14:"welcomeClassId";s:24:"64478777ffb4bf3181a326a0";s:10:"cohortName";s:24:"MS ATE MAY 2023 Cohort 1";s:21:"welcomeClassStartDate";i:1683657000;s:15:"cohortStartDate";i:1683984600;s:13:"cohortEndDate";i:1698773400;s:25:"welcomeClassStartDateUser";i:1683720000;s:19:"cohortStartDateUser";i:1684047600;s:17:"cohortEndDateUser";i:1698850800;s:16:"primary_label_id";s:2:"25";s:18:"primary_label_name";s:20:"Software Development";s:12:"cateforyInfo";a:1:{i:25;s:20:"Software Development";}s:15:"program_version";i:2;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+971-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 936 (char 935)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[AB] 98.80
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowMastersProgram object at 0x00000274411280D0>, value = 'AB'
initialize_pages = None
testdata = {'contact_no': '123456789', 'country': ['in', 'us', 'gb', 'au', 'de', 'sg', ...], 'db_type': 'mysql', 'dynamo_db_type': 'dynamo', ...}

@pytest.mark.test_details("0001","high","Order and Payment Flow","Pradeep")
@pytest.mark.parametrize("value", master_program_course_read_csv())
def test_Orders_and_Payment_Flow_masters_program(self,value,initialize_pages,testdata):

'''
Objective: Make payment and validate the data in Dynamo db and mySql

Step 01: get url
Step 02: click on Enroll Now CTA
Step 03: Make payment
Step 04: Validate the Dynamo db and MySql daya for the payment
'''
# self.add_rows_in_csv('Report.csv') this step is commentd to make one CSV file
# self.add_rows_in_csv('Report.csv')
#url_count = self._count_url_txt_file_subdomain('Order_and_Payment_Flow_masters.txt')
#logging.info(f"Total URL Present is: {url_count}")

# Step 01: get url
counter = 0
df = pd.read_csv('order_and_payment_master_prod.csv', on_bad_lines='skip')
data = df[df['id']==value]
url_value = data['url'].values[0]
country_value = data['country'].values[0]
try:
pytest.driver.delete_all_cookies()
pytest.driver.get(url_value)
logging.info(f"Url Opened is: {url_value}")
selenium_helper.wait_for_page_to_load(10,value)
self.pg_orders.change_country(country_value)

if selenium_helper.is_locator_present(self.pg_orders.locators['btn_enroll_now_masters_program'],10):
course_data = None
self.pg_orders.click_enroll_now_for_masters(url_value)

course_data = self._complete_payment(country_value,testdata['payment_type'],testdata['name'],testdata['email_id'],testdata['contact_no'])
logging.info(type(course_data))
time.sleep(5)

logging.info(f"course_data: {course_data}")

# Step 04: Validate the Dynamo db and MySql data for the payment
token_no = pytest.driver.current_url.split('authtoken=')[-1]
logging.info(f"Token No is: {token_no}")
query = testdata['sql_query'].replace('<token_no>',token_no)

sql_data = db_helper.get_prod_data(query,testdata['db_type'])
logging.info(f"RAW SQL Data: {sql_data}\n")
sql_items = self.convert_items_to_json(sql_data)
logging.info(f"SQL DATA in JSON format: {sql_items}\n")

all_payment_cta = []
for i in course_data[1][1]:
a = (list(i.values())[0])
if 'failed' in list(i.values())[0].lower():
all_payment_cta.append('fail')

message = self.verify_mySQL_data_masters_program(course_data[0],sql_items,sql_data,testdata)
if 'successfull' in message[0].lower() and len(all_payment_cta) == 0:
status = 'Success'
else:
status = 'Fail'
filename = 'Report.csv'
course_name = course_data[0]['course_name']
course_type = 'Masters Program'
# course_type = sql_items['training_type_txt']
rows = [[country_value.upper(),course_name,course_type,url_value,message,course_data[1][0],course_data[1][1],status]]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

else:
message = "Enroll Now button is not Appearing"
logging.info(message)
filename = 'Report.csv'
course_name = self.pg_orders.course_name_in_url.get_text()
course_type = 'Masters Program'
rows = [[country_value.upper(),course_name,course_type,url_value,message,'','','CTA NOT AVAILABLE']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)

except Exception as e:
counter = counter+1
logging.error("Exception occurred", exc_info=True)
filename = 'Report.csv'
course_name = 'NA'
course_type = 'master Program'
if course_data == None:
rows = [[country_value.upper(),course_name,course_type,url_value,'','','','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 1:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[0],'','Fail']]
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)
elif len(course_data) == 2:
rows = [[country_value.upper(),course_name,course_type,url_value,'',course_data[1][0],course_data[1][0]],'Fail']
with open(filename, 'a', newline='\n') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerows(rows)


if counter != 0:
> pytest.fail('Failed')
E Failed: Failed

test_prod\test_orders_and_payment_flow.py:555: Failed
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/advanced-digital-marketing-certification-training-course INFO  setup:orders_page.py:30 Country Set to: AE INFO  setup:orders_page.py:159 clicked on Enroll Now button for Masters Program INFO  setup:orders_page.py:162 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:579 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:485 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:488 course_data: ({'course_name': 'Digital Marketing Specialist', 'course_type': 'Online Bootcamp', 'base_price': '$ 1,049.00', 'final_price': '1,049.00'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:492 Token No is: e30bdbd155bbb8b8757b1d768a4d952cfb12f9d74217be482ffe8d330b54a032 INFO  setup:test_orders_and_payment_flow.py:496 RAW SQL Data: [{'items': 'a:1:{i:0;a:25:{s:2:"id";s:2:"23";s:4:"name";s:49:"Digital Marketing Specialist Online Self Learning";s:11:"description";s:4:" - 1";s:5:"price";s:7:"1049.00";s:9:"basePrice";s:4:"1049";s:19:"display_total_price";s:8:"1,049.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:6:"online";s:15:"trainingType_id";s:1:"9";s:10:"accessDays";s:3:"335";s:13:"productTypeId";s:1:"2";s:15:"productTypeName";s:6:"bundle";s:11:"actual_name";s:28:"Digital Marketing Specialist";s:7:"priceId";s:0:"";s:11:"billingType";i:1;s:7:"img_url";s:88:"https://www.simplilearn.com/ice9/course_images/bundle313x225/Digital-marketing-head.svgz";s:10:"course_url";s:57:"/advanced-digital-marketing-certification-training-course";s:17:"training_type_txt";s:20:"Online Self Learning";s:9:"messageTT";s:0:"";s:11:"offering_id";N;s:16:"primary_label_id";s:2:"18";s:18:"primary_label_name";s:17:"Digital Marketing";s:12:"cateforyInfo";a:1:{i:18;s:17:"Digital Marketing";}s:15:"program_version";i:3;}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+971-123456789'}] ERROR  setup:test_orders_and_payment_flow.py:533 Exception occurred Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 497, in test_Orders_and_Payment_Flow_masters_program sql_items = self.convert_items_to_json(sql_data) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 629, in convert_items_to_json data = json.loads(data) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\json\decoder.py", line 353, in raw_decode obj, end = self.scan_once(s, idx) json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 699 (char 698)
Failed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_orderAndPayment_flow_certification_program_report_details_to_DB 0.01
self = <test_orders_and_payment_flow.TestOrderAndPaymentFlowCertificationProgram object at 0x00000274410E3460>

@pytest.mark.order(-1)
@pytest.mark.test_details("0000", "high", "Order and Payment Flow", "Om")
def test_orderAndPayment_flow_certification_program_report_details_to_DB(self):

# Inserting order and payment flow certification program report to DB

current_date = date.today()
read_csvFile = pd.read_csv('Report.csv', usecols=[
'Course_Type', 'Status'], encoding='unicode_escape')
total_rows = len(read_csvFile)
logging.info(f'Total rows present in file are {total_rows}')
total_certification_row_count = 0
pass_count = 0

all_course_types = read_csvFile['Course_Type']
length = len(all_course_types)
all_status = read_csvFile['Status']

for index in range(0, length):
if 'Certification Program' == all_course_types[index]:
total_certification_row_count += 1
> if all_course_types[index] == 'Certification Program' and all_status[index].lower() == 'success' or 'cta not available':
E AttributeError: 'float' object has no attribute 'lower'

test_prod\test_orders_and_payment_flow.py:64: AttributeError
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:53 Total rows present in file are 105
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[A] 109.35
------------------------------Captured stderr call------------------------------
--- Logging error --- Traceback (most recent call last): File "c:\users\qateam\appdata\local\programs\python\python38\lib\logging\__init__.py", line 1084, in emit stream.write(msg + self.terminator) File "c:\users\qateam\appdata\local\programs\python\python38\lib\encodings\cp1252.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\u20b9' in position 171: character maps to <undefined> Call stack: File "c:\users\qateam\appdata\local\programs\python\python38\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File "c:\users\qateam\appdata\local\programs\python\python38\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "C:\Users\qateam\AppData\Local\Programs\Python\Python38\Scripts\pytest.exe\__main__.py", line 7, in <module> sys.exit(console_main()) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\config\__init__.py", line 190, in console_main code = main() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\config\__init__.py", line 167, in main ret: Union[ExitCode, int] = config.hook.pytest_cmdline_main( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 317, in pytest_cmdline_main return wrap_session(config, _main) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 270, in wrap_session session.exitstatus = doit(config, session) or 0 File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 324, in _main config.hook.pytest_runtestloop(session=session) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\main.py", line 349, in pytest_runtestloop item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 112, in pytest_runtest_protocol runtestprotocol(item, nextitem=nextitem) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 131, in runtestprotocol reports.append(call_and_report(item, "call", log)) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 220, in call_and_report call = call_runtest_hook(item, when, **kwds) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 259, in call_runtest_hook return CallInfo.from_call( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 339, in from_call result: Optional[TResult] = func() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 260, in <lambda> lambda: ihook(item=item, **kwds), when=when, reraise=reraise File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\runner.py", line 167, in pytest_runtest_call item.runtest() File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\python.py", line 1789, in runtest self.ihook.pytest_pyfunc_call(pyfuncitem=self) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\hooks.py", line 286, in __call__ return self._hookexec(self, self.get_hookimpls(), kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 93, in _hookexec return self._inner_hookexec(hook, methods, kwargs) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\manager.py", line 84, in <lambda> self._inner_hookexec = lambda hook, methods, kwargs: hook.multicall( File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\pluggy\callers.py", line 187, in _multicall res = hook_impl.function(*args) File "c:\users\qateam\appdata\local\programs\python\python38\lib\site-packages\_pytest\python.py", line 195, in pytest_pyfunc_call result = testfunction(**testargs) File "C:\test_repos\pre_sales_test_python\test_prod\test_orders_and_payment_flow.py", line 124, in test_Orders_and_Payment_Flow_certification logging.info(f"course_data: {course_data}") Message: "course_data: ({'course_name': 'Certified ScrumMaster® (CSM)', 'course_type': 'May 06 - May 07\\n(2 days) Classroom', 'base_price': '₹ 18,999.00', 'final_price': '22,418.82'}, (['Credit Card', 'Debit Card', 'Net Banking', 'UPI', 'EMI', '', 'CCAvenue'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'debitcard': 'All option clickable and Payment CTA appearing '}, {'net_banking': 'All option clickable and Payment CTA appearing '}, {'UPI': 'All option clickable and Payment CTA appearing '}, {'EMI': 'All option clickable and Payment CTA appearing '}, {'CCAvenue': 'All option clickable and Payment CTA appearing '}]))" Arguments: ()
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/agile-and-scrum/agile-and-scrum-certification-training INFO  setup:orders_page.py:30 Country Set to: IN INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded ERROR  setup:selenium_helper.py:61 Message: WARNING  setup:selenium_helper.py:62 the locator ('xpath', "//li[@id='shopse']//h2[contains(text(),'EMI')][not(contains(@style,'none'))]/ancestor::a") on url https://www.simplilearn.com/secure/checkout/details?authtoken=eaed52bbeb4905de13fa8ca3bc36753b9e6d6a36cd1db2e89ad79c5ca70a53fb is not visible INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:345 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'Certified ScrumMaster® (CSM)', 'course_type': 'May 06 - May 07\n(2 days) Classroom', 'base_price': '₹ 18,999.00', 'final_price': '22,418.82'}, (['Credit Card', 'Debit Card', 'Net Banking', 'UPI', 'EMI', '', 'CCAvenue'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'debitcard': 'All option clickable and Payment CTA appearing '}, {'net_banking': 'All option clickable and Payment CTA appearing '}, {'UPI': 'All option clickable and Payment CTA appearing '}, {'EMI': 'All option clickable and Payment CTA appearing '}, {'CCAvenue': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: eaed52bbeb4905de13fa8ca3bc36753b9e6d6a36cd1db2e89ad79c5ca70a53fb INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:28:{s:2:"id";s:1:"4";s:4:"name";s:50:"Certified ScrumMaster<sup>®</sup> (CSM) Classroom";s:11:"description";s:4:" - 1";s:5:"price";s:8:"22418.82";s:9:"basePrice";s:5:"18999";s:19:"display_total_price";s:9:"18,999.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"1";s:10:"workshopId";s:7:"1740744";s:5:"venue";s:3:"TBD";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:40:"Certified ScrumMaster<sup>®</sup> (CSM)";s:11:"billingType";i:1;s:7:"img_url";s:77:"https://www.simplilearn.com/ice9/course_images/icons/AGILE-AND-SCRUM-CSM.svgz";s:10:"course_url";s:43:"/agile-and-scrum/csm-certification-training";s:17:"training_type_txt";s:9:"Classroom";s:4:"from";s:10:"2023-05-06";s:2:"to";s:10:"2023-05-07";s:4:"days";i:2;s:9:"isExpired";i:0;s:6:"isSold";i:0;s:13:"workshopDates";N;s:16:"primary_label_id";s:1:"9";s:18:"primary_label_name";s:15:"Agile and Scrum";s:12:"cateforyInfo";a:1:{i:9;s:15:"Agile and Scrum";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+91-123456789'}] INFO  setup:test_orders_and_payment_flow.py:134 SQL DATA in JSON format: {'id': '4', 'name': 'Certified ScrumMaster (CSM) Classroom', 'description': ' - 1', 'price': '22418.82', 'basePrice': '18999', 'display_total_price': '18,999.00', 'quantity': 'isEarlyBird', 'type': 'classroom', 'trainingType_id': '1', 'workshopId': '1740744', 'venue': 'TBD', 'productTypeId': '1', 'productTypeName': 'course', 'actual_name': 'Certified ScrumMaster (CSM)', 'img_url': 'https://www.simplilearn.com/ice9/course_images/icons/AGILE-AND-SCRUM-CSM.svgz', 'course_url': '/agile-and-scrum/csm-certification-training', 'training_type_txt': 'Classroom', 'from': '2023-05-06', 'to': '2023-05-07', 'days': 'isExpired', 'isSold': 'workshopDates', 'primary_label_id': '9', 'primary_label_name': 'Agile and Scrum'} INFO  setup:test_orders_and_payment_flow.py:338 Verifiaction Status Log Message: ['DB Verification Successfull']
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[B] 36.79
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/agile-and-scrum/pmi-acp-certification-training INFO  setup:orders_page.py:30 Country Set to: IN INFO  setup:test_orders_and_payment_flow.py:157 Enroll Now button is not Appearing
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[F] 109.01
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/agile-and-scrum/agile-and-scrum-certification-training INFO  setup:orders_page.py:30 Country Set to: US INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'Certified ScrumMaster® (CSM)', 'course_type': 'May 04 - May 05\n(2 days) Classroom', 'base_price': '$ 599.00', 'final_price': '599.00'}, (['Credit Card', 'PayPal', 'Affirm', 'Klarna'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'Affirm': 'All option clickable and Payment CTA appearing '}, {'klarna': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: 3b66954653516302487278789be21e0af3e6ea3631b9ff9df997f2e23d6dfdd2 INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:28:{s:2:"id";s:1:"4";s:4:"name";s:50:"Certified ScrumMaster<sup>®</sup> (CSM) Classroom";s:11:"description";s:4:" - 1";s:5:"price";s:6:"599.00";s:9:"basePrice";s:3:"599";s:19:"display_total_price";s:6:"599.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"1";s:10:"workshopId";s:7:"1736504";s:5:"venue";s:3:"TBD";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:40:"Certified ScrumMaster<sup>®</sup> (CSM)";s:11:"billingType";i:1;s:7:"img_url";s:77:"https://www.simplilearn.com/ice9/course_images/icons/AGILE-AND-SCRUM-CSM.svgz";s:10:"course_url";s:43:"/agile-and-scrum/csm-certification-training";s:17:"training_type_txt";s:9:"Classroom";s:4:"from";s:10:"2023-05-04";s:2:"to";s:10:"2023-05-05";s:4:"days";i:2;s:9:"isExpired";i:0;s:6:"isSold";i:0;s:13:"workshopDates";N;s:16:"primary_label_id";s:1:"9";s:18:"primary_label_name";s:15:"Agile and Scrum";s:12:"cateforyInfo";a:1:{i:9;s:15:"Agile and Scrum";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+91-123456789'}] INFO  setup:test_orders_and_payment_flow.py:134 SQL DATA in JSON format: {'id': '4', 'name': 'Certified ScrumMaster (CSM) Classroom', 'description': ' - 1', 'price': '599.00', 'basePrice': '599', 'display_total_price': '599.00', 'quantity': 'isEarlyBird', 'type': 'classroom', 'trainingType_id': '1', 'workshopId': '1736504', 'venue': 'TBD', 'productTypeId': '1', 'productTypeName': 'course', 'actual_name': 'Certified ScrumMaster (CSM)', 'img_url': 'https://www.simplilearn.com/ice9/course_images/icons/AGILE-AND-SCRUM-CSM.svgz', 'course_url': '/agile-and-scrum/csm-certification-training', 'training_type_txt': 'Classroom', 'from': '2023-05-04', 'to': '2023-05-05', 'days': 'isExpired', 'isSold': 'workshopDates', 'primary_label_id': '9', 'primary_label_name': 'Agile and Scrum'} INFO  setup:test_orders_and_payment_flow.py:338 Verifiaction Status Log Message: ['DB Verification Successfull']
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[G] 36.88
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/agile-and-scrum/pmi-acp-certification-training INFO  setup:orders_page.py:30 Country Set to: US INFO  setup:test_orders_and_payment_flow.py:157 Enroll Now button is not Appearing
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[L] 36.98
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/agile-and-scrum/pmi-acp-certification-training INFO  setup:orders_page.py:30 Country Set to: GB INFO  setup:test_orders_and_payment_flow.py:157 Enroll Now button is not Appearing
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[P] 142.54
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/agile-and-scrum/agile-and-scrum-certification-training INFO  setup:orders_page.py:30 Country Set to: AU INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'Certified ScrumMaster® (CSM)', 'course_type': 'May 04 - May 05\n(2 days) Classroom', 'base_price': 'A$ 799.00', 'final_price': '799.00'}, (['Credit Card', 'PayPal'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: 2b6c6469c1e1925235e14ad455e1b5d689f91f5c1b9b44f0891e9abea9c3e161 INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:28:{s:2:"id";s:1:"4";s:4:"name";s:50:"Certified ScrumMaster<sup>®</sup> (CSM) Classroom";s:11:"description";s:4:" - 1";s:5:"price";s:6:"799.00";s:9:"basePrice";s:3:"799";s:19:"display_total_price";s:6:"799.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"1";s:10:"workshopId";s:7:"1740357";s:5:"venue";s:3:"TBD";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:40:"Certified ScrumMaster<sup>®</sup> (CSM)";s:11:"billingType";i:1;s:7:"img_url";s:77:"https://www.simplilearn.com/ice9/course_images/icons/AGILE-AND-SCRUM-CSM.svgz";s:10:"course_url";s:43:"/agile-and-scrum/csm-certification-training";s:17:"training_type_txt";s:9:"Classroom";s:4:"from";s:10:"2023-05-04";s:2:"to";s:10:"2023-05-05";s:4:"days";i:2;s:9:"isExpired";i:0;s:6:"isSold";i:0;s:13:"workshopDates";N;s:16:"primary_label_id";s:1:"9";s:18:"primary_label_name";s:15:"Agile and Scrum";s:12:"cateforyInfo";a:1:{i:9;s:15:"Agile and Scrum";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+44-123456789'}] INFO  setup:test_orders_and_payment_flow.py:134 SQL DATA in JSON format: {'id': '4', 'name': 'Certified ScrumMaster (CSM) Classroom', 'description': ' - 1', 'price': '799.00', 'basePrice': '799', 'display_total_price': '799.00', 'quantity': 'isEarlyBird', 'type': 'classroom', 'trainingType_id': '1', 'workshopId': '1740357', 'venue': 'TBD', 'productTypeId': '1', 'productTypeName': 'course', 'actual_name': 'Certified ScrumMaster (CSM)', 'img_url': 'https://www.simplilearn.com/ice9/course_images/icons/AGILE-AND-SCRUM-CSM.svgz', 'course_url': '/agile-and-scrum/csm-certification-training', 'training_type_txt': 'Classroom', 'from': '2023-05-04', 'to': '2023-05-05', 'days': 'isExpired', 'isSold': 'workshopDates', 'primary_label_id': '9', 'primary_label_name': 'Agile and Scrum'} INFO  setup:test_orders_and_payment_flow.py:338 Verifiaction Status Log Message: ['DB Verification Successfull']
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[Q] 37.33
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/agile-and-scrum/pmi-acp-certification-training INFO  setup:orders_page.py:30 Country Set to: AU INFO  setup:test_orders_and_payment_flow.py:157 Enroll Now button is not Appearing
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[V] 36.98
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/agile-and-scrum/pmi-acp-certification-training INFO  setup:orders_page.py:30 Country Set to: DE INFO  setup:test_orders_and_payment_flow.py:157 Enroll Now button is not Appearing
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[Z] 140.55
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/agile-and-scrum/agile-and-scrum-certification-training INFO  setup:orders_page.py:30 Country Set to: SG INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'Certified ScrumMaster® (CSM)', 'course_type': 'May 04 - May 05\n(2 days) Classroom', 'base_price': '$ 599.00', 'final_price': '646.92'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: 0139e1e0c5813355845a46c47ecdf6a76ba28cbfae42fcb2bc754f6e2458834b INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:28:{s:2:"id";s:1:"4";s:4:"name";s:50:"Certified ScrumMaster<sup>®</sup> (CSM) Classroom";s:11:"description";s:4:" - 1";s:5:"price";s:6:"646.92";s:9:"basePrice";s:3:"599";s:19:"display_total_price";s:6:"599.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"1";s:10:"workshopId";s:7:"1740374";s:5:"venue";s:3:"TBD";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:40:"Certified ScrumMaster<sup>®</sup> (CSM)";s:11:"billingType";i:1;s:7:"img_url";s:77:"https://www.simplilearn.com/ice9/course_images/icons/AGILE-AND-SCRUM-CSM.svgz";s:10:"course_url";s:43:"/agile-and-scrum/csm-certification-training";s:17:"training_type_txt";s:9:"Classroom";s:4:"from";s:10:"2023-05-04";s:2:"to";s:10:"2023-05-05";s:4:"days";i:2;s:9:"isExpired";i:0;s:6:"isSold";i:0;s:13:"workshopDates";N;s:16:"primary_label_id";s:1:"9";s:18:"primary_label_name";s:15:"Agile and Scrum";s:12:"cateforyInfo";a:1:{i:9;s:15:"Agile and Scrum";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+65-123456789'}] INFO  setup:test_orders_and_payment_flow.py:134 SQL DATA in JSON format: {'id': '4', 'name': 'Certified ScrumMaster (CSM) Classroom', 'description': ' - 1', 'price': '646.92', 'basePrice': '599', 'display_total_price': '599.00', 'quantity': 'isEarlyBird', 'type': 'classroom', 'trainingType_id': '1', 'workshopId': '1740374', 'venue': 'TBD', 'productTypeId': '1', 'productTypeName': 'course', 'actual_name': 'Certified ScrumMaster (CSM)', 'img_url': 'https://www.simplilearn.com/ice9/course_images/icons/AGILE-AND-SCRUM-CSM.svgz', 'course_url': '/agile-and-scrum/csm-certification-training', 'training_type_txt': 'Classroom', 'from': '2023-05-04', 'to': '2023-05-05', 'days': 'isExpired', 'isSold': 'workshopDates', 'primary_label_id': '9', 'primary_label_name': 'Agile and Scrum'} INFO  setup:test_orders_and_payment_flow.py:338 Verifiaction Status Log Message: ['DB Verification Successfull']
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[AA] 37.03
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/agile-and-scrum/pmi-acp-certification-training INFO  setup:orders_page.py:30 Country Set to: SG INFO  setup:test_orders_and_payment_flow.py:157 Enroll Now button is not Appearing
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[AE] 142.61
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/agile-and-scrum/agile-and-scrum-certification-training INFO  setup:orders_page.py:30 Country Set to: AE INFO  setup:orders_page.py:38 clicked on Enroll Now button INFO  setup:orders_page.py:41 Payment Page Loaded ERROR  setup:ssvc_cart_page.py:55 Exception in City dropdown Traceback (most recent call last): File "C:\test_repos\pre_sales_test_python\pages_prod\ssvc_cart_page.py", line 52, in fill_learner_details_and_proceed self.city_dropdown.select_element_by_index(1) File "C:\test_repos\pre_sales_test_python\core\page_factory.py", line 60, in __getattr__ raise NoSuchElementException("An exception of type " + type(error).__name__ + " occurred. With Element -: " + loc) selenium.common.exceptions.NoSuchElementException: Message: An exception of type TimeoutException occurred. With Element -: city_dropdown INFO  setup:test_orders_and_payment_flow.py:216 <class 'tuple'> INFO  setup:ssvc_cart_page.py:367 Payment Deatils Entered INFO  setup:test_orders_and_payment_flow.py:121 <class 'tuple'> INFO  setup:test_orders_and_payment_flow.py:124 course_data: ({'course_name': 'Certified ScrumMaster® (CSM)', 'course_type': 'May 04 - May 05\n(2 days) Classroom', 'base_price': '$ 599.00', 'final_price': '599.00'}, (['Credit Card', 'PayPal', '2Checkout'], [{'creditcard': 'All option clickable and Payment CTA appearing '}, {'Paypal': 'All option clickable and Payment CTA appearing '}, {'2checkout': 'All option clickable and Payment CTA appearing '}])) INFO  setup:test_orders_and_payment_flow.py:128 Token No is: 3a8e49596d5b2b094ba3cc89d40ef6c786373b5613ec4e5b0e0f215e9ea836e2 INFO  setup:test_orders_and_payment_flow.py:132 RAW SQL Data: [{'items': 'a:1:{i:0;a:28:{s:2:"id";s:1:"4";s:4:"name";s:50:"Certified ScrumMaster<sup>®</sup> (CSM) Classroom";s:11:"description";s:4:" - 1";s:5:"price";s:6:"599.00";s:9:"basePrice";s:3:"599";s:19:"display_total_price";s:6:"599.00";s:8:"quantity";i:1;s:11:"isEarlyBird";i:0;s:4:"type";s:9:"classroom";s:15:"trainingType_id";s:1:"1";s:10:"workshopId";s:7:"1740365";s:5:"venue";s:3:"TBD";s:13:"productTypeId";s:1:"1";s:15:"productTypeName";s:6:"course";s:11:"actual_name";s:40:"Certified ScrumMaster<sup>®</sup> (CSM)";s:11:"billingType";i:1;s:7:"img_url";s:77:"https://www.simplilearn.com/ice9/course_images/icons/AGILE-AND-SCRUM-CSM.svgz";s:10:"course_url";s:43:"/agile-and-scrum/csm-certification-training";s:17:"training_type_txt";s:9:"Classroom";s:4:"from";s:10:"2023-05-04";s:2:"to";s:10:"2023-05-05";s:4:"days";i:2;s:9:"isExpired";i:0;s:6:"isSold";i:0;s:13:"workshopDates";N;s:16:"primary_label_id";s:1:"9";s:18:"primary_label_name";s:15:"Agile and Scrum";s:12:"cateforyInfo";a:1:{i:9;s:15:"Agile and Scrum";}}}', 'emailId': 'simplilearnautomation@gmail.com', 'contactNumber': '+971-123456789'}] INFO  setup:test_orders_and_payment_flow.py:134 SQL DATA in JSON format: {'id': '4', 'name': 'Certified ScrumMaster (CSM) Classroom', 'description': ' - 1', 'price': '599.00', 'basePrice': '599', 'display_total_price': '599.00', 'quantity': 'isEarlyBird', 'type': 'classroom', 'trainingType_id': '1', 'workshopId': '1740365', 'venue': 'TBD', 'productTypeId': '1', 'productTypeName': 'course', 'actual_name': 'Certified ScrumMaster (CSM)', 'img_url': 'https://www.simplilearn.com/ice9/course_images/icons/AGILE-AND-SCRUM-CSM.svgz', 'course_url': '/agile-and-scrum/csm-certification-training', 'training_type_txt': 'Classroom', 'from': '2023-05-04', 'to': '2023-05-05', 'days': 'isExpired', 'isSold': 'workshopDates', 'primary_label_id': '9', 'primary_label_name': 'Agile and Scrum'} INFO  setup:test_orders_and_payment_flow.py:338 Verifiaction Status Log Message: ['DB Verification Successfull']
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowCertificationProgram::test_Orders_and_Payment_Flow_certification[AF] 36.98
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:102 Total URL Present is: 5 INFO  setup:test_orders_and_payment_flow.py:113 Url Opened is: https://www.simplilearn.com/agile-and-scrum/pmi-acp-certification-training INFO  setup:orders_page.py:30 Country Set to: AE INFO  setup:test_orders_and_payment_flow.py:157 Enroll Now button is not Appearing
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[C] 57.91
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/ui-ux-design-masters-program-certification-course INFO  setup:orders_page.py:30 Country Set to: IN INFO  setup:test_orders_and_payment_flow.py:522 Enroll Now button is not Appearing
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[G] 56.95
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/ui-ux-design-masters-program-certification-course INFO  setup:orders_page.py:30 Country Set to: US INFO  setup:test_orders_and_payment_flow.py:522 Enroll Now button is not Appearing
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[K] 57.32
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/ui-ux-design-masters-program-certification-course INFO  setup:orders_page.py:30 Country Set to: GB INFO  setup:test_orders_and_payment_flow.py:522 Enroll Now button is not Appearing
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[O] 58.76
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/ui-ux-design-masters-program-certification-course INFO  setup:orders_page.py:30 Country Set to: AU INFO  setup:test_orders_and_payment_flow.py:522 Enroll Now button is not Appearing
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[S] 57.43
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/ui-ux-design-masters-program-certification-course INFO  setup:orders_page.py:30 Country Set to: DE INFO  setup:test_orders_and_payment_flow.py:522 Enroll Now button is not Appearing
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[W] 57.34
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/ui-ux-design-masters-program-certification-course INFO  setup:orders_page.py:30 Country Set to: SG INFO  setup:test_orders_and_payment_flow.py:522 Enroll Now button is not Appearing
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_Orders_and_Payment_Flow_masters_program[AA] 57.63
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:476 Url Opened is: https://www.simplilearn.com/ui-ux-design-masters-program-certification-course INFO  setup:orders_page.py:30 Country Set to: AE INFO  setup:test_orders_and_payment_flow.py:522 Enroll Now button is not Appearing
Passed test_orders_and_payment_flow.py::TestOrderAndPaymentFlowMastersProgram::test_orderAndPayment_flow_master_program_report_details_to_DB 0.58
-------------------------------Captured log call--------------------------------
INFO  setup:test_orders_and_payment_flow.py:415 Total rows present in file are 105 INFO  setup:test_orders_and_payment_flow.py:431 Total master program urls are 7 INFO  setup:test_orders_and_payment_flow.py:433 Total testcases passes is 7 INFO  setup:test_orders_and_payment_flow.py:434 Total testcases failed is 0 INFO  setup:db_helper.py:51 DB_type selected : mysql INFO  setup:db_connection.py:96 Requested Query : INSERT INTO automation_ice9.td_order_and_payment_flow_report_details(module_name, sub_module_name, total_testcase_count, passed, failed, run_date) VALUES( 'Order and Payment Flow', 'Master Program', '7', '7', '0', '2023-05-04');