|
Example Program #08
This program illustrates the eValid EPI interface
by implementing, entirely in CPP, it is a variant of one of our script-based "mapslive.evs"
which is done entirely with index commands.
The program invocation would be as follows (there are no arguments): example08.exe
Program Source
Here is the CPP for the EPI program for this example.
The EPI program generates the complete event log, similar to other
EPI examples in this set.
// FileName: Example08.cpp #include "stdafx.h" #include "epi.h" using namespace std; void TraceEvalidLog(IEvalid * p) { if (p == NULL) return; IEvalidLogCollection * pColl; if (SUCCEEDED(p->get_LastPlaybackLog(&pColl))) { long numItems; pColl->get_length(&numItems); for(long i = 0; i < numItems; ++i) { IEvalidLog * pLog; pColl->item(i, &pLog); long seq, cmd, line, a, f, t; CComBSTR date, time, prj, grp, tst, stat, msg; pLog->get_accumTime(&a); pLog->get_cmdNum(&cmd); pLog->get_date(&date); pLog->get_fineTime(&f); pLog->get_groupName(&grp); pLog->get_lineNum(&line); pLog->get_message(&msg); pLog->get_projectName(&prj); pLog->get_seqNum(&seq); pLog->get_status(&stat); pLog->get_testName(&tst); pLog->get_time(&time); pLog->get_totalCmdTime(&t); pLog->Release(); cout << CString(date) << " " << CString(time) << "\t" << seq << "\t" << cmd << "\t" << line << "\t" << CString(prj) << "\t" << CString(grp) << "\t" << CString(tst) << "\t" << CString(stat) << "\t" << a << "\t" << f << "\t" << t << "\t" << CString(msg) << endl; } pColl->Release(); } } int main() { ::CoInitialize(NULL); IEvalid * pEvalid = NULL; HRESULT hr = CoCreateInstance(CLSID_Evalid, NULL, CLSCTX_INPROC_SERVER, IID_IEvalid, (void**)&pEvalid); if (SUCCEEDED(hr)) { // ---------------------------------------------------------------------------- // Step 1: Step 1: Startup... pEvalid->InitLink(CComBSTR("http://www.virtualearth.com")); TraceEvalidLog(pEvalid); // Step 2: To assure page is ready (AJAX) replace Wait with DOM Sync... pEvalid->SyncOnSelectedObjProperty(0, 415, CComBSTR("className"), CComBSTR("fg"), CComBSTR("readyState"), CComBSTR("complete"), CComBSTR("")); TraceEvalidLog(pEvalid); // Step 3: Make the search request... pEvalid->InputValue(0, 100, CComBSTR("TEXT"), CComBSTR("sb_form_q"), CComBSTR("q"), CComBSTR("Moscone Conven" \ "tion Center San Francisco, CA"), CComBSTR(""), CComBSTR("")); TraceEvalidLog(pEvalid); pEvalid->Wait(374); TraceEvalidLog(pEvalid); pEvalid->SubmitClick(0, 103, CComBSTR("sb_form_go"), CComBSTR("go"), CComBSTR(""), CComBSTR("")); TraceEvalidLog(pEvalid); // Step 4: To assure results have arrived, replace Wait with URL Sync... pEvalid->SyncOnURL(CComBSTR("http://maps.live.com/BrandFinder.ashx")); TraceEvalidLog(pEvalid); // Step 5: Validate text is found... pEvalid->ValidateSelectedText(0, 356, 0, CComBSTR("747 Howard St,"), CComBSTR("")); TraceEvalidLog(pEvalid); // Step 6: pEvalid->Wait(3946); TraceEvalidLog(pEvalid); pEvalid->SyncOnSelectedObjProperty(0, 207, CComBSTR("id"), CComBSTR("YN114x2001180_number"), CComBSTR("nameProp"), CComBSTR("#"), CComBSTR("")); TraceEvalidLog(pEvalid); // Step 7: pEvalid->Wait(2387); TraceEvalidLog(pEvalid); pEvalid->MatchString( 0, CComBSTR("(415) 974-4000"), 0, CComBSTR("")); TraceEvalidLog(pEvalid); // End of script. pEvalid->ExitNow(); // ---------------------------------------------------------------------------- pEvalid->Release(); } else if (hr == E_ACCESSDENIED) cout << "Missing a valid EPI license key!" << endl; else cout << "Unable to load EPI!" << endl; ::CoUninitialize(); return 0; } } |
Resources
Corresponding eValid Script
Here is the corresponding eValid recorded script "example08.evs":
# Recording by eValid V9 # (c) Copyright 2012 by Software Research, Inc. # Recording made on: Microsoft Windows Vista (IE 7.0.6000.16643) ProjectID "FunctionalTests" GroupID "Experimental" TestID "example08" LogID "AUTO" ScreenSize 1440 900 FontSize 0 DeleteCache DeleteCookies # Step 1: Startup... InitLink "http://www.virtualearth.com/" # Step 2: To assure page is ready (AJAX) replace Wait with DOM Sync... # Wait 19407 SyncOnSelectedObjProperty 0 415 "className" "fg" "readyState" "complete" "" # Step 3: Make the search request... InputValue 0 100 "TEXT" "sb_form_q" "q" "Moscone Conven" \ "tion Center San Francisco, CA" "" "" Wait 374 SubmitClick 0 103 "sb_form_go" "go" "" "" # Step 4: To assure results have arrived, replace Wait with URL Sync... # Wait 17902 SyncOnURL "http://maps.live.com/BrandFinder.ashx" # Step 5: Validate text is found... ValidateSelectedText 0 356 0 "747 Howard St," "" # Step 6: Wait 3946 SyncOnSelectedObjProperty 0 207 "id" "YN114x2001180_number" "nameProp" "#" "" # Step 7: Wait 2387 MatchString 0 "(415) 974-4000" 0 # End of script. |