2016-10-14 7 views
1

IE를 열고 외부 웹 사이트의 양식에 입력 된 내용을 자동으로 입력하는 스크립트를 만들고 싶습니다. 채워 넣기를 원하는 입력은 프레임 안에 위치합니다. 그러므로 getElementByID은 여기서 작동하지 않습니다.VBScript를 사용하여 프레임 내부의 입력 값을 변경하는 방법

나는 스크립트를 사용하기위한 자체 테스트 사이트를 만들었습니다. 나중에 나는 그것을 다른 것에 구현할 것이지만 나는 단순하게 시작하고 싶다. 이 스크립트가 열립니다 사이트입니다 :

<!DOCTYPE html> 
<html> 

<frameset cols="25%,*,25%"> 
    <frame name="menu" src="menu.html"> 
    <frame name="form" src="form.html"> 
    <frame name="application" src="application.html"> 
</frameset> 

</html> 

이것은 form.html의 예입니다 (그것은 단지 시험의 아직 아무것도 제출해야 나던) :하지 적어도 여기

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Login</title> 
    </head>   
    <body> 
    <div class="login"> 
    <form action='' method='POST' id='nameform'> 
     Username: <input type='text' name='user' id='user' value=""><br> 
     Password: <input type='password' name='pswrd' id='pswrd' value=""><br>  
     <input name='submit' type='submit' value='submit' id='submit'><br> 
    </form> 
    </div> 
    </body> 
</html> 

그리고 마지막으로이다 내 VBScript를 :

Call Main 

Function Main 
    Set IE = WScript.CreateObject("InternetExplorer.Application", "IE_") 

    IE.Visible = True 

    IE.Navigate "http://example.com" 
    Wait IE 
    With IE.Document 
     .getElementByID("user").value = "CoolUsername123" 
     .getElementByID("pswrd").value = "BestPasswordEver321" 
    End With 
End Function 

Sub Wait(IE) 
    Do 
     WScript.Sleep 500 
    Loop While IE.ReadyState < 4 And IE.Busy 
End Sub 

이 코드는 다른 사이트에서 잘 작동, 내가 전에 trello.com에 사용했습니다. 그러나이 사이트는 프레임을 사용하지 않으며 이것이 문제 일 수 있다고 생각합니다.

Call Main 

Function Main 
    Set IE = WScript.CreateObject("InternetExplorer.Application", "IE_") 

    IE.Visible = True 

    IE.Navigate "http://example.com" 
    Wait IE 
    With IE.Document 
    set frame = IE.document.getElementsByName("form")(0) 
     frame.contentwindow.document.getElementByID("user").value = "CoolUsername123" 
     frame.contentwindow.document.getElementByID("pswrd").value = "BestPasswordEver321" 
    End With 
End Function 

Sub Wait(IE) 
    Do 
     WScript.Sleep 500 
    Loop While IE.ReadyState < 4 And IE.Busy 
End Sub 

나는 또한 시도 :

은 나뿐만 아니라이 코드를 사용하려고했습니다 내가 오류를 더 이상하지 않는

IE.Document.Frames("form").Document.All("user").Value = "CoolUsername123" 

을하지만 값이 입력도 없다

답변

1

먼저 "form"프레임을 페이지에서 가져옵니다. 그것은 단지 이름을 가지고 있기 때문에, 우리는 getElementsByName 방법을 사용하고 반환 된 컬렉션의 첫 번째 요소 얻을 수 있습니다 :

set frame = IE.document.getElementsByName("form")(0) 

는 이제 contentWindow property를 사용하여 양식 필드를 액세스합니다.

frame.contentwindow.document.getElementByID("user").value = "CoolUsername123" 
frame.contentwindow.document.getElementByID("pswrd").value = "BestPasswordEver321" 
+1

귀하의 방법을 사용해 보았지만 제대로 작동하지 않았습니다. 코드에 문제가 있거나 코드가 단순히 VBScript에서 작동하지 않는지는 알 수 없습니다. – Skaarl

+0

질문을 편집하고 지금 사용하고있는 코드를 추가하여 우리가 작동하는지 확인할 수 있습니다. – SearchAndResQ

+0

정확히 무엇을 의미합니까? – Skaarl