2015-10-14 7 views
10

मैं एक आउटलुक वेब एक्सेस वेबसाइट को स्वचालित, कुछ बक्सें को भरने और एक बटन क्लिक करने के लिए कोशिश कर रहा हूँ,स्वचालित (आईई ComObject) भरें बक्सें

मैंने प्रथम पृष्ठ में प्रासंगिक तत्वों पा सकते हैं (प्रवेश) और सबमिट बटन, इसलिए मैं लॉगिन चरण पास करता हूं, मेरी समस्या कुछ पेजों के अंदर तत्वों को मुखौटा टेक्स्टबॉक्स के साथ ढूंढना है, मैंने 3 चरणों के स्नैपशॉट संलग्न किए हैं, और ऑब्जेक्ट की डीओएम छवि भी संलग्न की है।

The Login Page

$IE = New-Object -ComObject InternetExplorer.Application 
$URL = 'https://somewebsite/ecp/?rfr=owa&p=PersonalSettings/Password.aspx' 
$IE.Visible = $true 
$IE.Navigate($URL) 
While ($IE.Busy -eq $true) {Start-Sleep -Milliseconds 2000} 

$ie.Document.getElementById('username').value = "username" 
$ie.Document.getElementById('password').value = "password" 
$Submit = $ie.Document.getElementsByTagName('Input') | ? {$_.Type -eq "Submit"} 
$Submit.click() 

अब तक तो अच्छा, पन्नों में मेरी समस्या शुरू अंदर, मैं सिर्फ नहीं बक्सें तत्वों पासवर्ड क्षेत्रों के लिए, प्राप्त कर सकते हैं

enter image description here

भी यहाँ

है उन तत्वों के लिए डोम स्नैपशॉट:

enter image description here

मैं किसी भी मदद की सराहना करते हैं वास्तव में कर रहा हूँ

+0

के लिए आप के लिए PowerShell [कड़ी] WASP उपयोग कर सकते हैं (https://wasp.codeplex.com)। मॉड्यूल आयात करें। एक बार उस पृष्ठ पर जहां आपको जाने की आवश्यकता है, आप $ IE का उपयोग कर सकते हैं। Send-Keys "{TAB}" जहां आप चाहते हैं वहां वेबपृष्ठ के माध्यम से नेविगेट करने के लिए निर्धारित समय निर्धारित करें। –

+0

wasp एक विकल्प नहीं है, कई सिस्टम, WShell पर चलाना चाहिए।SendKey स्वागत के रूप में एक विकल्प नहीं है, सभी – Avshalom

उत्तर

0

ठीक मैं इसे :) पाया

समस्या यह थी कि साइट पर एक दो IFrames, एक दूसरे के अंदर था,

$IFrame = $ie.Document.getElementsByTagName('iframe').item(0) 
$IFrame = $IFrame.contentWindow.document.getElementsByTagName('iframe').item(0) 
$PasswordSlab = $IFrame.contentWindow.document.getElementById('passwordSlab') 
$PasswordSlab.document.getElementById('txtOldPwd').value = $OldPassword 
$PasswordSlab.document.getElementById('txtNewPwd').value = $NewPassword 
$PasswordSlab.document.getElementById('txtConfirmPwd').value = $NewPassword 
$PasswordSlab.document.getElementById('save').click() 

धन्यवाद हर कोई

0

यह हम आसानी से स्वचालन आईडी का उपयोग कर तत्व का पता लगा सकते यूआई Automation.there का उपयोग के साथ संभव है और हम आसानी से प्रदर्शन कर सकते हैं पढ़ें/लिखें operation's.But मैं कि क्या पता नहीं है अपने यूआई स्वचालन का उपयोग करके आरामदायक हैं, अगर यह ठीक है तो मुझे लगता है कि मैं आपकी मदद कर सकता हूं। यूआई स्वचालन जैसे

1) यूआई स्वचालन में कई ओपेटियन हैं।

2) व्हाइट

3) watin.etc।,

अगर आप ढांचे में से किसी के साथ सहज हैं तो मुझे लगता है मैं आप मदद कर सकते हैं लगता है।

+0

यू पर स्थिर नहीं है, बस एक बार संक्षिप्त विचार प्राप्त करने के लिए निम्नलिखित लिंक के माध्यम से जाएं: यूआई पथ: [http://www.uipath.com/]
यूआई स्वचालन: [https: // msdn.microsoft.com/en-us/library/ms747327(v=vs.110).aspx] व्हाइट: [https://github.com/TestStack/White] Watin: [http://watin.org/] –

1

automate a file upload on sharepoint पर प्रयास करते समय मुझे एक ही तरह की समस्या थी। चाल यह थी कि अपलोड फॉर्म एक नए फ्रेम के अंदर खुला था।

<iframe id="Dlg..." class="ms-dlgFrame" src="https://.../Upload.aspx?List=..."></iframe> 

तो इनपुट फ़ील्ड मैं प्रत्येक खुला फ्रेम में देखने के लिए था हो और चयन करने के लिए अच्छा स्थान के साथ एक:

for($i=0;$i -lt $ie.Document.frames.length;$i++){ 
    if($ie.Document.frames.item($i).location.href -match 'upload.aspx'){ 
     $frm=$ie.Document.frames.item($i)} 
} 
तो मैं इनपुट क्षेत्र को लक्षित करने में सक्षम था से

:

$frm.document.body.getElementById("txtOldPwd") 
संबंधित मुद्दे