【问题标题】:Can't autoclick icon link within a frame for a webpage VBA无法在网页 VBA 的框架内自动单击图标链接
【发布时间】:2013-05-17 14:21:55
【问题描述】:

我正在尝试编写一个 vba 代码以在登录后自动单击图标链接。我被我在下面编写的 vba 代码卡住了,当我运行 vba 宏时没有响应。我相信图标链接在网页的框架内。请帮忙谢谢

我尝试右键单击图标链接以检查框架 url 地址,并在登录后导航到该网页,但它会自动重定向到我不想要的另一个页面。

URL地址(带有图标链接的目标网页):“https://trading.poems.com.hk/poems2/poems.asp?func=view

自动重定向网页:“https://trading.poems.com.hk/poems2/loginaction.asp

图标链接html代码:

<a href="#" onClick="StockPop = window.open ('http://www.poems.com.hk/stockSummary/stockSummary.asp?                                            iKey=2755766c747a25535353574373b375a375c05','StockAnalytics','scrollbars=yes,resizable=yes,status=yes,left=0,top=0,width=1250,height=700,toolbar=0')"><img src="images/Corner/EN/Company.png" border=0 title="Stock Analytics "></a>

我的 VBA 代码:

Sub open3()
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "https://trading.poems.com.hk/poems2/poems.asp?func=view"


Do Until ie.readyState = 4
DoEvents
Loop


For Each ele In ie.document.getElementsByTagName("a")
If InStr(ele.innerHTML, "images/Corner/EN/Company.png") > 0 Then
ele.Click


Exit For
End If
Next

End Sub

网页的框架:

<html>
<head>
 <title>Phillip Securities (HK)-?????? (?????????)</title>
 <link rel="shortcut icon" href="images/phillip.ico">
   <meta http-equiv="Content-Type" content="text/html; charset=big5"></head>

     <frameset cols="*, 100%" border=0 frameborder=0 framespacing=0 marginheight=0 marginwidth=0>
<frame src="Poems2/BrowserChecking.asp" name="ChkBrowser">
<frame src="Poems2/Poems.asp" name="login" frameborder=0 framespacing=0 marginheight=0   marginwidth=0>
      </frameset><noframes></noframes>
     </html>

部分HTML源代码:

  <!DOCTYPE html PUBLIC "-/W3C//DTD XHTML 1.0 Transtitional//EN"
 http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5" />
   <title>??????-?????????</title>
    </head>
     <link href="css/phillip.css" rel="stylesheet" type="text/css" />
      <script type="text/javascript" >document.domain="poems.com.hk"</script>
    <script type="text/javascript" src="js/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="css/ddsmoothmenu_Execution_EN.css" />
<script type='text/javascript' src='js/ddsmoothmenu.js'></script>
<script type="text/javascript" src="js/font.js"></script>
<script type="text/javascript">
ddsmoothmenu.init({

mainmenuid: "smoothmenu1", //menu DIV id
orientation: 'h', //Horizontal or vertical menu: Set to "h" or "v"
classname: 'ddsmoothmenu', //class added to menu's outer DIV
//customtheme: ["#1c5a80", "#18374a"],
contentsource: "markup" //"markup" or ["container_id", "path_to_menu_file"]
})


</script>
<script type="text/javascript">
var myclose = false;

function ConfirmClose()
{
    frameURL = (parent.DetailFrame.location.href).toUpperCase()
    //alert(frameURL + "////   " + frameURL.indexOf("PPSHK.COM"))
    if (frameURL.indexOf("PPSHK") > 0)
    {

        if (event.clientY < 0)
        {
            event.returnValue = '???????????, ?????????\n????!';
            //setTimeout('myclose=false',10000);
            //myclose=true;
        }
    }
}

function parentExists() {
    return (parent.location == window.location) ? false : true;
}

if(!parentExists())
    document.location = "../index2.htm"



function checkKeyCode(evt)
{
    var evt = (evt) ? evt : ((event) ? event : null);
    var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
    if(event.keyCode==116)
    {
        location.reload(true);
        return false
    }
}
document.onkeydown=checkKeyCode;
</script>
<body onUnload="CloseAllPop()">
<script>
    var EFuturePop
    var StockPop
    var USStockPop
    var SGStockPop
    var JPStockPop
    var SAStockPop
    var SOptionPop
    var SNOptionPop
    var StockGTCPop
    var BullionPop
    var FxBannerPop

    var FoFuturePop
    var ForexPop
    var FoOptionsPop

    var ForexResponse
    var FoFutureResponse
    var FoOptionsResponse

    function CloseAllPop(){
        if(EFuturePop != null){
            EFuturePop.close()
        }
        if(StockPop != null){
            StockPop.close()
        }
        if(USStockPop != null){
            USStockPop.close()
        }
        if(SGStockPop != null){
            SGStockPop.close()
        }
        if(JPStockPop != null){
            JPStockPop.close()
        }
        if(SAStockPop != null){
            SAStockPop.close()
        }
        if(SOptionPop != null){
            SOptionPop.close()
        }
        if(SNOptionPop != null){
            SNOptionPop.close()
        }
        if(StockGTCPop != null){
            StockGTCPop.close()
        }
        if(BullionPop != null){
            BullionPop.close()
        }
//      if(FxBannerPop != null){
//          FxBannerPop.close()
//      }
        if(FoFuturePop != null){
            FoFuturePop.close()
        }
        if(ForexPop != null){
            ForexPop.close()
        }
        if (FoOptionsPop != null) {
            FoOptionsPop.close()
        }
    }

    function forexClose(ans){
        ForexResponse = ans;
    }

    function foFutureClose(ans){
        FoFutureResponse = ans;
    }

    function foOptionsClose(ans) {
        FoOptionsResponse = ans;
    }

    function DisclaimerClose(type,ans){
        if (type == "Forex"){
            ForexResponse = ans;
        }
        else if (type == "FoFuture"){
            FoFutureResponse = ans;
        }
        else if (type == "FoOptions") {
            FoOptionsResponse = ans;
        }
    }

    function changeDetailFrame(link) {
        $('#DetailFrame').attr('src',link);
    }

    function CheckStockGTCPop(){
        if(StockGTCPop != null){
            parent.DetailFrame.location.href = "NoPopup/ZH/TradeStock_GTC.asp"
        }
        else{
            StockGTCPop = window.open('StockDisclaimer_GTC.asp','HKStockGTC','scrollbars=yes,resizable=yes,status=no,left=0,top=0,width=1014,height=710,toolbar=0')
        }
    }

    function CheckForexPop(){
        if (ForexResponse=="A"){
            if (ForexPop.closed) {
                ForexPop = window.open('Forex/asp/menu/100kforex_fr.asp','Forex','scrollbars=yes,resizable=yes,status=no,left=0,top=0,width=1014,height=710,toolbar=0')
            }
        }
        else{
            ForexPop = window.open('ForexDisclaimer.asp','Forex','scrollbars=yes,resizable=yes,status=no,left=0,top=0,width=1014,height=710,toolbar=0')
        }
    }

    function CheckFoFuturePop(){
        if (FoFutureResponse=="A"){
            if (FoFuturePop.closed){
                FoFuturePop = window.open('FoFutures/EN/ftslingshot2b3/LiveMain_fr.asp?type=F', 'FoFuture', 'scrollbars=yes,resizable=yes,status=no,left=0,top=0,width=1014,height=710,toolbar=0')
            }
        }
        else{
            FoFuturePop = window.open('FoFutureDisclaimer.asp','FoFuture','scrollbars=yes,resizable=yes,status=no,left=0,top=0,width=1014,height=710,toolbar=0')
        }
    }

    function CheckFoOptionsPop() {
        if (FoOptionsResponse == "A") {
            if (FoOptionsPop.closed) {
                FoOptionsPop = window.open('FoFutures/EN/ftslingshot2b3/LiveMain_fr.asp?type=O', 'FoFuture', 'scrollbars=yes,resizable=yes,status=no,left=0,top=0,width=1014,height=710,toolbar=0')
            }
        }
        else {
            FoOptionsPop = window.open('FoOptionsDisclaimer.asp','FoOptions', 'scrollbars=yes,resizable=yes,status=no,left=0,top=0,width=1014,height=710,toolbar=0')
        }
    }

//  function CheckFoFuturePop_FO(){
//      FoFuturePop = window.open('FoFutures/EN/ftslingshot2b3/LiveMain_fr_FO.asp','FoFuture','scrollbars=yes,resizable=yes,status=no,left=0,top=0,width=1014,height=710,toolbar=0')
//  }

    function CheckFxBannerPop(){
        if(FxBannerPop != null){
            parent.DetailFrame.location.href = "Forex/asp/menu/100kforex_fr.asp"
        }
        else{
            parent.DetailFrame.location.href = "Forex/asp/menu/100kforex_fr.asp"
            FxBannerPop = window.open('Banner.htm','FxBanner','scrollbars=yes,resizable=yes,status=no,left=0,top=0,width=600,height=300,toolbar=0')
        }
    }
    //document.body.onunload = CloseAllPop
</script>
<table width="985" border="0" align="center" cellpadding="0" cellspacing="0" id="maintable">
  <tr>
    <td width="10" background="images/bgsquareleft.jpg"></td>
    <td bgcolor="#FFFFFF"><table width="940" border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td colspan="2">
            <table width="100%" border="0" cellspacing="0" cellpadding="0">
                <tr><td>
                    <table width="100%" border="0" cellspacing="0" cellpadding="0">
                    <tr>
                        <td height="64"><a href="MainMenu.asp" target="DetailFrame"><img src="POEMSBanner.gif" alt="Phillip's ON-LINE ELECTRONIC MART SYSTEM" height="54"  border="0" /></a></td>
                        <td align="right" valign="bottom" class="style3">

            <a href="#" onClick="TradCenPop = window.open('https://trading.poems.com.hk/Poems2/tradingcentral/index.aspx?pf=X&lang=en&id=XXXXXX','TradingCentral','scrollbars=yes,resizable=yes,status=yes,left=0,top=0,width=680,height=480,toolbar=0')"><img src="images/Corner/EN/tradingcen.png" border=0 title="Trading Central"></a>
                            <a href="#" onClick="StockPop = window.open('http://www.poems.com.hk/stockSummary/stockSummary.asp?iKey=2755766c747a4373b375a375c05','StockAnalytics','scrollbars=yes,resizable=yes,status=yes,left=0,top=0,width=1250,height=700,toolbar=0')"><img src="images/Corner/EN/Company.png" border=0 title="Stock Analytics "></a>&>

【问题讨论】:

  • 您能否上传突出显示您要单击的图标的图片,因为我无法找到该图标。

标签: excel vba


【解决方案1】:

您的网址“https://trading.poems.com.hk/poems2/poems.asp?func=view”返回的框架集页面没有单个标记的 HTML 代码。

请注意,Browser 对象中的 Document 元素不会扩展底层页面。你在这里看到的和你在浏览器中使用“显示源”功能看到的一样

检查直接调用(其中一个)框架页面的可能性

【讨论】:

  • 您好如何直接调用加框页面?我尝试使用 Firefox 并单击框架信息。它给了我“trading.poems.com.hk/poems2/poems.asp?func=view
  • 但它重定向到我不想要的这个网页:“trading.poems.com.hk/poems2/loginaction.asp
  • 那么您实际上想在浏览器中看到哪个页面?使用 VBA,您只能对正确加载的页面进行操作....页面加载(执行服务器端或客户端脚本)时发生的所有事情都超出了 VBA 的影响
猜你喜欢
  • 2020-01-20
  • 1970-01-01
  • 2019-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 1970-01-01
相关资源
最近更新 更多