2012-01-28 21 views
6

मैं उड़ान स्थिति की जांच करने के लिए PowerShell के साथ एक स्क्रिप्ट बनाना चाहता हूं। लेकिन मेरे लिए टेक्स्टबॉक्स मान सेट करना संभव नहीं है।पावरशेल - आईई ऑब्जेक्ट, सेट मान त्रुटि

मैं इसे कैसे ठीक कर सकता हूं? आपका अग्रिम में ही बहुत धन्यवाद!

त्रुटि: इस वस्तु पर संपत्ति 'मूल्य' नहीं मिल सकता है; सुनिश्चित करें कि यह मौजूद है और सेटटेबल है।

कोड:

#Flight Number (Only Lufthansa) 
#For example flight number 
[string]$flightNumber = "LH 3102" 

$ie = new-object -com "InternetExplorer.Application" 
$ie.navigate("http://www.lufthansa.com/de/de/Ankunft-und-Abflug") 
$ie.visible = $true 
sleep 5 
#while ($ie.busy) {sleep -milliseconds 50} 
while($ie.ReadyState -ne 4) {start-sleep -m 100}  

$ie.document.getElementsByName("flightNumber").value = $flightNumber 
#Error 
$ie.document.getElementsByName("flightNumber").IHTMLInputTextElement_value = $flightNumber 
#Error 
$ie.document.getElementsByName("flightNumber").IHTMLInputElement_value = $flightNumber 
#Error 

उत्तर

5

इस प्रयास करें:

$ie.document.getElementByID("ns_7_CO19VHUC6FFPF0I5O4OBCT2OE4_flightNumber").value = $flightNumber 

यह मेरे लिए काम करता है। मुझे अपने ब्राउज़र के माध्यम से स्रोत कोड देखकर आईडी मिली।

मुझे नहीं पता क्यों getElementsByName काम नहीं करता है। शायद कोई और इस पर कुछ प्रकाश डाल सकता है?


संपादित करें:

ठीक है, मैं यह पता लगा। getElementsByName एक संग्रह देता है। मूल्य निर्धारित करने के लिए आपको संग्रह के माध्यम से पुन: प्रयास करना होगा। तो आपका कोड इस तरह दिखेगा:

#Flight Number (Only Lufthansa) 
#For example flight number 
[string]$flightNumber = "LH 3102" 

$ie = new-object -com "InternetExplorer.Application" 
$ie.navigate("http://www.lufthansa.com/de/de/Ankunft-und-Abflug") 
$ie.visible = $true 
sleep 5 
#while ($ie.busy) {sleep -milliseconds 50} 
while($ie.ReadyState -ne 4) {start-sleep -m 100}  

$elements = $ie.document.getElementsByName("flightNumber") 

Foreach($element in $elements) 
    { 
     $element.value = $flightnumber 
    } 

यह मेरे लिए काम करता था।

+2

तुम भी संग्रह में आइटम एक्सेस कर सकते सीधे 'आइटम (एन)' विधि का उपयोग कर। जैसे '$ Ie.document.getElementsByName (" flightNumber ")। मद (0) .value'। यह आसान है अगर आपके पास संग्रह में केवल एक तत्व है और इसके लिए एक लूप सेट नहीं करना चाहते हैं। हालांकि, सुनिश्चित करें कि 'getElementsByName' पहले एक गैर-शून्य मान देता है! –

1

बहुत ही सरल है, बस टैग नाम के लिए देखो:

$ie = New-Object -com InternetExplorer.Application 
$ie.visible=$true 

$ie.navigate("http://www.lufthansa.com/de/de/Ankunft-und-Abflug") 
while($ie.ReadyState -ne 4) {start-sleep -m 100} 

# here is where the magic happens 
$termsField = $ie.document.getElementsByName("routeDepartureStationName") 
@($termsField)[0].value ="powershell" 

enter image description here

संबंधित मुद्दे