// 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; }