2011-06-01 14 views
6

का उपयोग कर आईफ्रेम से फॉर्म नाम प्राप्त करें मैं वेबसाइट पर फ़ॉर्म भरने को स्वचालित करने के लिए AutoIt का उपयोग कर रहा हूं।ऑटोआईट

लेकिन मुझे वेबसाइट से फॉर्म नाम प्राप्त करने में समस्या आ रही है। मैं एचटीएमएल के स्रोत को देखता हूं और फॉर्म और उसका नाम ढूंढता हूं, लेकिन मुझे अभी भी IEStatus_noMatch त्रुटि मिलती है।

क्या फॉर्म नाम पाने के लिए कोई आसान तरीका है या इसे कैसे ढूंढें?

मुझे ऑब्जेक्ट्स के लिए एक ही समस्या का सामना करना पड़ सकता है।

$sUrl = "https://www.acgme.org/residentdatacollection/login.asp" 
$oIE = _IEAttach($sUrl, "url") 
If not isObj($oIE) Then 
    $oIE = _IECreate() 
    _IENavigate($oIE, $sUrl) 
EndIf 

; Get pointers to the login form and username and password fields 
$o_form = _IEFormGetObjByName($oIE, "loginentry") 
$o_login = _IEFormElementGetObjByName($o_form, "USERID") 
$o_password = _IEFormElementGetObjByName($o_form, "PASSW") 

उत्तर

7

मैं AutoIt मंच से इस सवाल का जवाब मिल गया here

दो फ्रेम कर रहे हैं और फार्म दूसरे फ्रेम में है, इसलिए $o_frame = _IEFrameGetCollection($oIE, 1) का उपयोग दूसरे फ्रेम पाने के लिए (सूचकांक 1 सेकंड फ्रेम है, सूचकांक 0 पहले होगा)।

तो का उपयोग करके फ्रेम से प्रपत्र प्राप्त करें: $o_form = _IEFormGetObjByName($o_frame, "loginentry")

तो अपने कोड के उस अनुभाग दिखाई देगा:

; get pointers to the login form and username and password fields 
$o_frame = _IEFrameGetCollection($oIE, 1) 
$o_form = _IEFormGetObjByName($o_frame, "loginentry") 

$o_login = _IEFormElementGetObjByName($o_form, "USERID") 
$o_password = _IEFormElementGetObjByName($o_form, "PASSW") 

USERID और PASSW छिपे हुए हैं क्षेत्रों ताकि आप उन्हें भरा नहीं देखेंगे यदि फॉर्म ठीक से सबमिट नहीं करता है, तो दृश्य फ़ील्ड नामों का उपयोग करें:

$o_login = _IEFormElementGetObjByName($o_form, "posterior") 
$o_password = _IEFormElementGetObjByName($o_form, "fossa" 
1

तुम गलत समारोह का उपयोग कर रहे प्रपत्र वस्तु पाने के लिए ... _IEForm * तत्व * GetObjByName प्रपत्र उप तत्वों के लिए है। आपको इसके बजाय _IEFormGetObjByName फ़ंक्शन का उपयोग करना चाहिए।

+1

यह एक अच्छा जवाब है लेकिन .. यह वास्तव में समस्या को ठीक नहीं करता है। मैंने बदलाव किया है। लेकिन मुझे अभी भी उदाहरण के लिए वेब साइट के साथ $ _IEStatus_NoMatch मिल गया है। – Whitecat