2016-06-01 2 views
-1

사과, 저는 PowerShell (그리고 일반적으로 스크립팅)을 처음 접했습니다. IE Automation의 기본에 대한 문제가 있습니다. 내가하고 싶은 것은 자동으로 웹 페이지에 로그온 한 다음 양식에 데이터를 입력하는 스크립트입니다. 하지만 로그인 페이지의 텍스트 입력란에 데이터를 입력 할 수 없습니다. 나는 인터넷이 옳았는지 센터를 뒤져 왔지만 아직 대답을 찾지 못했다. 그러나 그것이 분명 할 것이라고 상상한다.IE 자동화 문제 - PowerShell

여기에 지금까지 내 스크립트입니다 : 내가 스크립트를 실행 할 때마다

$ie = new-object -ComObject InternetExplorer.Application; 

$requestUri = "www.testurl.com" 


$ie.visible = $true 
$ie.navigate($requestUri) 
while ($ie.ReadyState -ne 4) 
{ 
    start-sleep -Seconds 1; 
} 

$doc = $ie.Document 
$doc.GetElementById("ppm_login_username") = $userName 
$userName.value = "UserName" 

그러나, 나는 그렇게 다시이 많은, 아무 경험이없는 오류

The property 'value' cannot be found on this object. Verify that the property exists and can be set. 
+ $userName.value = "UserName" 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : InvalidOperation: (:) [], RuntimeException 
+ FullyQualifiedErrorId : PropertyNotFound 

를 얻을, 잘못된 용어 사용에 사과드립니다. DOM을 탐색기를 사용하여 , 입력 필드는 다음 코드 줄이 있습니다

<INPUT id=ppm_login_username maxLength=240 size=40 name=userName> 

그래서 내가 올바른 개체를 얻고 있다는 확신을, 그러나 '값'방법을 동의하지 않는 것 데이터를 전달하려고 할 때.

값이 개체의 속성으로 표시되기 때문에 통과하지 못하는 이유를 이해할 수 없습니다. 제공 할 수있는 모든 도움과 시간을 대단히 감사드립니다!

답변

0

: 단지 대신 IE를 자동화하기 위해 노력하는, 호출 - WebRequest 클래스/호출-RestMethod를 사용하는 것이 더 좋을 수도 당신은 그것을 혼합했습니다. $variable = value이어야합니다. 시도해보십시오 :

$doc = $ie.Document 
#Set $username to reference of "ppm_logon_username"-input node 
$userName = $doc.GetElementById("ppm_login_username") 
$userName.value = "UserName" 
+0

고맙습니다. Frode. 그런 어리석은 오류. 그러나 그것은 설명 될 때 많은 의미가 있습니다! – HMNIW

0

변수 $userName은 어디에 정의되어 있습니까? "value"속성이 있어야합니다.

일반적으로이처럼 추가 할 수 있습니다

$Username | Add-Member -MemberType NoteProperty -Value "UserName" -Name value

하지만이 유형 문자열의 변수 수 있는지 모르겠습니다.

어쨌든 $userName.value = "UserName"을 설정하려는 이유가 확실하지 않습니다.

은 또한

https://technet.microsoft.com/de-de/library/hh849901.aspx

https://technet.microsoft.com/en-us/library/hh849971(v=wps.620).aspx

+1

'Invoke-WebRequest'로 양식 인증을 사용하여 웹 사이트에 로그인 한 적이 있습니까? 'Invoke-WebRequest'는 타겟을 알고 있고 그것을 가지고 있다면 작동합니다. 기본 인증이지만 양식 인증. 다른 것입니다. :-) –

+0

Invoke-WebRequest를 많이 사용하지 않았 음을 공개적으로 인정 하겠지만 폼 인증으로 자격을 부여해야하는 mantis 인스턴스에 자동으로 로그인하는 데 사용했습니다. 어쨌든, 그것은 단지 그것에 대해 생각하지 않고 가능한 대안으로 의미가있었습니다 :) 원래 문제를 해결할 수 있었습니까? – whatever