0

我有一個vba腳本,可以自動導航通過ups.com。直到涉及具有不同url的子窗口時,它才能正常工作。在那個子窗口中是一個簡單的形式,但是當腳本提交表單時,它只是刷新屏幕,或者出現錯誤,表示網站不可用。的URL子窗口是在兒童窗口提交表格

https://wwwapps.ups.com/webClaims/address 

和該窗口上的相關HTML

<script language="javascript" type="text/JavaScript"> 
 

 

 
function updateReturn() 
 
{ 
 
    \t "use strict" ; 
 
    \t opener.document.reportform.raddress.value = "true"; 
 
    opener.document.reportform.submit(); 
 
    top.close(); 
 
    } 
 

 
function updateDeliver() 
 
{ 
 
    \t "use strict" ; 
 
    opener.document.reportform.daddress.value = "true"; 
 
    opener.document.reportform.submit(); 
 
    top.close(); 
 
} 
 

 
function updateContact() 
 
{ 
 
    \t "use strict" ; 
 
    opener.document.reportform.caddress.value = "true"; 
 
    opener.document.reportform.submit(); 
 
    top.close(); 
 
} 
 

 
function updateOther() 
 
{ 
 
    \t "use strict" ; 
 
    opener.document.reportform.oaddress.value = "true"; 
 
    opener.document.reportform.submit(); 
 
    top.close(); 
 
} 
 

 
function submitRefresh() 
 
{ 
 
    \t "use strict" ; 
 
    this.document.address.refresh.value = "true"; 
 
    document.address.submit(); 
 
} 
 

 
</script> 
 

 

 
<div id="main"> 
 

 

 

 

 
<form name="address" action="/webClaims/address" method="post"> 
 
<input type="hidden" name="loc" value="en&#95;US"> 
 

 
<input type="hidden" name="addrtype" value="f"> 
 

 
<input type="hidden" name="refresh" value=""> 
 

 

 
<table border="0" cellpadding="0" cellspacing="0" width="566"> 
 
<tr> 
 
\t <td valign="top" width="422"> 
 

 
\t 
 
\t <table border="0" cellpadding="0" cellspacing="0" width="100%"> 
 
\t <tr> 
 
\t \t <td class="pi-mA1-t" valign="top"> 
 

 
\t \t 
 
\t \t <table border="0" cellpadding="0" cellspacing="0" width="422"> 
 
\t \t <tr> 
 
\t \t \t <td class="pi-m-txt-title"> 
 
     
 
      Edit Shipped From Address 
 
     
 
     
 
     
 
     
 
     
 

 
     </td> 
 
\t \t </tr> 
 
\t \t </table> 
 
\t \t 
 

 
\t \t </td> 
 
\t </tr> 
 
\t <tr> 
 
\t \t <td class="pi-mA1-c-t-spc"><img alt="" border="0" height="1" src="/img/1.gif" width="1"></td> 
 
\t </tr> 
 
\t <tr> 
 
\t \t <td class="pi-mA1-c" valign="top"> 
 

 
    \t \t 
 
    \t \t <table border="0" cellpadding="0" cellspacing="0" width="100%"> 
 
    \t \t <tr> 
 
    \t \t \t <td> 
 
      <div class="pi-m-pad"> 
 
      
 
      Please edit the address below. Required fields are shown in <span class="pi-h4">bold</span>.<br> 
 
      <br> 
 

 

 

 
      
 
       <span class="pi-h4">Company Name:</span> 
 
      
 
      
 
      <br> 
 
      
 
       <input class="modTxtMedium" name="companyName" maxlength="50" size="19" type="text" value=""> 
 
      
 
      
 
      <br><br> 
 
    
 

 
      
 
       <span class="pi-h4">Name:</span> 
 
      
 
      
 
      <br> 
 
      
 
       <input class="modTxtMedium" name="name" maxlength="50" size="19" type="text" value=""> 
 
      
 
      
 
      <br><br /> 
 

 
    
 
       <span class="pi-h4">Country:</span> 
 
    
 
    
 
      <br> 
 
      <select name="country" class="modSelMedium" onChange="javascript:submitRefresh()" > 
 
       
 
       <option SELECTED value="US">United States</option> 
 
       
 
       <option value="CA">Canada</option> 
 
       
 

 
      </select> 
 
      <br><br> 
 

 
    
 

 
      
 
       <span class="pi-h4">Address Line 1:</span> 
 
      
 
      
 
      <br> 
 
      
 
       <input class="modTxtMedium" name="address1" maxlength="50" size="19" type="text" value=""> 
 
      
 
      
 
      <br><br> 
 

 
      Address Line 2: 
 
      <br> 
 
       <input class="modTxtMedium" name="address2" maxlength="50" size="19" type="text" value=""> 
 
       <br> 
 
       <span class="reqTxtInst">Apartment, suite, unit, building, floor, etc. </span> 
 
      <br><br> 
 

 
      Address Line 3: 
 
      <br> 
 
       <input class="modTxtMedium" name="address3" maxlength="50" size="19" type="text" value=""> 
 
      <br> 
 
      <span class="reqTxtInst">Department, c/o, etc. </span> 
 
      <br><br> 
 

 
      
 
       <span class="pi-h4">City:</span> 
 
      
 
      
 
      <br> 
 
      
 
      
 
       <input class="modTxtMedium" name="city" maxlength="50" size="19" type="text" value="WALNUT"> 
 
      
 
      <br><br> 
 

 
      
 
       
 
        <span class="pi-h4">State:</span> 
 
       
 
       
 
      
 

 
      
 
      <br> 
 
      <select name="state" class="modSelMedium" size="1"> 
 
       
 
       <option value="AL">Alabama</option> 
 
       
 
       <option value="AK">Alaska</option> 
 
       
 
       <option value="AZ">Arizona</option> 
 
       
 
       <option value="AR">Arkansas</option> 
 
       
 
       <option SELECTED value="CA">California</option> 
 
       
 
       <option value="CO">Colorado</option> 
 
       
 
       <option value="CT">Connecticut</option> 
 
       
 
       <option value="DC">District of Columbia</option> 
 
       
 
       <option value="DE">Delaware</option> 
 
       
 
       <option value="FL">Florida</option> 
 
       
 
       <option value="GA">Georgia</option> 
 
       
 
       <option value="HI">Hawaii</option> 
 
       
 
       <option value="ID">Idaho</option> 
 
       
 
       <option value="IL">Illinois</option> 
 
       
 
       <option value="IN">Indiana</option> 
 
       
 
       <option value="IA">Iowa</option> 
 
       
 
       <option value="KS">Kansas</option> 
 
       
 
       <option value="KY">Kentucky</option> 
 
       
 
       <option value="LA">Louisiana</option> 
 
       
 
       <option value="ME">Maine</option> 
 
       
 
       <option value="MD">Maryland</option> 
 
       
 
       <option value="MA">Massachusetts</option> 
 
       
 
       <option value="MI">Michigan</option> 
 
       
 
       <option value="MN">Minnesota</option> 
 
       
 
       <option value="MS">Mississippi</option> 
 
       
 
       <option value="MO">Missouri</option> 
 
       
 
       <option value="MT">Montana</option> 
 
       
 
       <option value="NE">Nebraska</option> 
 
       
 
       <option value="NV">Nevada</option> 
 
       
 
       <option value="NH">New Hampshire</option> 
 
       
 
       <option value="NJ">New Jersey</option> 
 
       
 
       <option value="NM">New Mexico</option> 
 
       
 
       <option value="NY">New York</option> 
 
       
 
       <option value="NC">North Carolina</option> 
 
       
 
       <option value="ND">North Dakota</option> 
 
       
 
       <option value="OH">Ohio</option> 
 
       
 
       <option value="OK">Oklahoma</option> 
 
       
 
       <option value="OR">Oregon</option> 
 
       
 
       <option value="PA">Pennsylvania</option> 
 
       
 
       <option value="RI">Rhode Island</option> 
 
       
 
       <option value="SC">South Carolina</option> 
 
       
 
       <option value="SD">South Dakota</option> 
 
       
 
       <option value="TN">Tennessee</option> 
 
       
 
       <option value="TX">Texas</option> 
 
       
 
       <option value="UT">Utah</option> 
 
       
 
       <option value="VT">Vermont</option> 
 
       
 
       <option value="VA">Virginia</option> 
 
       
 
       <option value="WA">Washington</option> 
 
       
 
       <option value="WV">West Virginia</option> 
 
       
 
       <option value="WI">Wisconsin</option> 
 
       
 
       <option value="WY">Wyoming</option> 
 
       
 
      </select> 
 
      <br><br> 
 

 
      
 
       <span class="pi-h4">Postal Code:</span> 
 
      
 
      
 
      <br> 
 
      
 
       <input class="modTxtMedium" name="postal" maxlength="9" size="19" type="text" value=""> 
 
      
 
      
 
      <br><br> 
 

 
     
 

 
    \t \t \t </div> 
 
    \t \t \t </td> 
 
    \t \t </tr> 
 
    \t \t </table> 
 
    \t \t 
 

 

 

 

 
     <table border="0" cellpadding="0" cellspacing="0"> 
 
    \t \t <tr> 
 
    \t \t \t <td> 
 
      <div class="pi-m-pad"> 
 
      
 
       <span class="pi-h4">Telephone:</span> 
 
      
 
      
 
      <br> 
 
      
 
       <span class="pi-h4"><input class="modTxtMedium" name="telephone" maxlength="15" size="19" type="text" value=""> 
 
      
 
      
 

 
      <br> 
 
      </div> 
 
     </td> 
 
    \t \t \t <td> 
 
      
 
      Ext: 
 
      
 
      
 
      <br> 
 
      
 
      <input class="modTxtSmall" name="extension" maxlength="5" size="4" type="text" value=""> 
 
      
 
      
 
     \t \t \t <br> 
 
    \t \t \t </td> 
 
    \t \t </tr> 
 
    \t \t </table> 
 
    \t </td> 
 
\t </tr> 
 
\t <tr> 
 
\t \t <td class="pi-mA1-c-b-spc"><img alt="" border="0" height="1" src="/img/1.gif" width="1"></td> 
 
\t </tr> 
 
\t <tr> 
 
\t \t <td class="pi-mA1-line"><img alt="" border="0" height="1" src="/img/1.gif" width="1"></td> 
 
\t </tr> 
 
\t <tr> 
 
\t \t <td class="pi-mA1-b" valign="top"> 
 

 
\t \t 
 
\t \t <table border="0" cellpadding="0" cellspacing="0" width="422"> 
 
\t \t <tr> 
 
\t \t \t <td class="pi-m-button" nowrap><input type="image" alt="Update" name="update_address" src="/img/en/btn_update.gif" WIDTH="51" HEIGHT="18"></td> 
 
\t \t </tr> 
 
\t \t </table> 
 
\t \t 
 

 
\t \t </td> 
 
\t </tr> 
 
\t </table> 
 
\t 
 

 
\t </td> 
 
\t <td width="10"><img alt="" border="0" height="1" src="/img/1.gif" width="10"></td> 
 
\t <td valign="top" width="134"><img alt="" border="0" height="1" src="/img/1.gif" width="134"></td> 
 
</tr> 
 
</table> 
 

 

 
</form>

要填寫表格,我只是做這個和它的作品沒關係

IE.Navigate "https://wwwapps.ups.com/webClaims/address?addrtype=f&loc=en_US" 
'IE.Document.Focus 
Sleep (5000) 
IE.Document.getElementsByName("companyName")(0).Value = "COMPANY" 
IE.Document.getElementsByName("name")(0).Value = "n\a"   
IE.Document.getElementsByName("address1")(0).Value = "222 address" 
IE.Document.getElementsByName("postal")(0).Value = "99999" 
IE.Document.getElementsByName("telephone")(0).Value = "111-111-1111" 

但是當它來了提交表格,我遇到了麻煩。正如你所看到的,提交表單後,會進入生產擺在首位

<form name="address" action="/webClaims/address" method="post"> 

形式的URL,這樣難怪形式沒有去任何地方,當我做

IE.Document.getElementsByName("address")(0).submit 

我看着他們有的JavaScript功能,也試過這個

Call IE.Document.parentWindow.execScript("submitRefresh", "JavaScript") 

但有相同的結果。

當我嘗試

Call IE.Document.parentWindow.execScript("updateContact()", "JavaScript") 

我得到這個錯誤

Could not complete the operation due to error 80020101 

我也試着點擊出現提交表單

<input type="image" alt="Update" name="update_address" src="/img/en/btn_update.gif" WIDTH="51" HEIGHT="18"> 

,但它的按鈕說input標記不可點擊。

我是否錯過了關於HTMLJavaScript的一些需要與平時不同的方法?我不明白關於兒童窗戶的事情嗎,這使我的方法行不通?

回答

0

所以它變成可以與孩子互動的窗口,像這樣和它的URL

Dim objShell, IE_count, x, my_url, childPage 
'Instead of opening the child window as if it were a web page with a url, treat it as a mere popup window 
Set objShell = CreateObject("Shell.Application") 
IE_count = objShell.Windows.Count 
For x = 0 To (IE_count - 1) 
    On Error Resume Next ' sometimes more web pages are counted than are open 
    'We find which window is the popup by looking at its url 
    my_url = objShell.Windows(x).Document.Location 
    'Debug.Print my_url 
    'The url of the popup 
    If my_url = "https://wwwapps.ups.com/webClaims/address?addrtype=f&loc=en_US" Then 
     'We found it, so make it a shell object for us to work with 
     Set childPage = objShell.Windows(x) 
     Exit For 
    End If 
Next 

我借巨資從here識別它。

我可能試圖通過獲取其標題來獲取子窗口,但它具有與父窗口相同的標題,所以url更好。之後,我可以填寫表格並使用childPage對象及其方法和屬性進行提交。