首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VBA在网页上选择选项卡,该选项卡引用Java脚本

VBA在网页上选择选项卡,该选项卡引用Java脚本
EN

Stack Overflow用户
提问于 2018-07-31 12:28:03
回答 1查看 397关注 0票数 1

我有下面的HTML代码(见下面),在这里我想点击这个网页上的按钮,名为NBT订单接收。我的代码除了点击这个标签头(标签后面没有URL,所以不能那样导航)。我相信有用的代码在图像中突出显示的两个部分之间。

我试过查询选择器。使用名称和ID以及get元素函数单击。

任何帮助都将不胜感激(只需要将1行代码添加到我的字符串中)

注:网站是安全的,并且有登录,所以不能共享URL,因此代码的图像。

HTML:

代码语言:javascript
运行
复制
name="home_tab_name_97" value="KPI - Best Card Jobs"/></div>
<div id="home_tab_98" class="home_tab" title="" >
   <div class="home_tab_inner"><span id="home_tab_label_98" onclick="SelectHomeTab(98)">NBT Order Intake</span>&nbsp;<img src="Includes.aspx?type=image&amp;name=Images/lsd_down.gif" border="0" class="home_tab_setting" onclick="HomeTabSettings(98)" /></div>
   <div class="el_hidden" id="home_tab_settings_98">
      <div><a class="mnu_item" href="javascript: RenameHomeTab(98)">Rename</a></div>
      <div><a class="mnu_item" href="javascript: DeleteHomeTab(98)">Delete</a></div>
      <div><a class="mnu_item" href="javascript: ShareHomeTab(98)">Make Public</a></div>
      <div><a class="mnu_item" href="javascript: ShowAddDashCustomPageOptions(98)">Add Custom Item</a></div>
      <div class="mnu_item_divider"></div>
      <div><a class="mnu_item" onclick="HideHomeSettings(98)">Cancel</a></div>
   </div>
   <input type="hidden" id="home_tab_name_98" name="home_tab_name_98" value="NBT Order Intake"/>
</div>
<div id="home_tab_99" class="home_tab" title="" >
<div class="home_tab_inner">
<span id="home_tab_label_99"

图像的

VBA:

代码语言:javascript
运行
复制
Sub test()
    Dim IE As Object
    Dim objElement As Object
    Dim objCollection As Object

    'add worksheet
    Sheets.Add after:=ActiveSheet

    'destination
    Set destsheet = ActiveSheet

    'use internet explorer
    Set IE = CreateObject("InternetExplorer.application")
    ' with internet open, make this visable and go to webpage x, enter username a
    nd passwork
    With IE
        .Visible = True
        .navigate ("URL")
        While .Busy Or .readyState <> 4: DoEvents: Wend
        'ie.Document.getElementsbyname("User name").Focus
        IE.document.getElementsByName("username")(0).Value = "Username"
        IE.document.getElementsByName("password")(0).Value = "Pword"
        While .Busy Or .readyState <> 4: DoEvents: Wend
        'look for the input field (HTML CODE)
        Set objCollection = IE.document.getElementsByTagName("input")

        i = 0
        While i < objCollection.Length
            If objCollection(i).Type = "submit" And _
               objCollection(i).Name = "" Then
                ' "Search" button is found
                Set objElement = objCollection(i)

            End If
            i = i + 1
        Wend
        '(click the log on)
        objElement.Click
        While .Busy Or .readyState <> 4: DoEvents: Wend
    End With
    With IE
        IE.document.querySelector("input[id=home_tab_name_98]").Click
    End With
    'close the internet page
End Sub
EN

回答 1

Stack Overflow用户

发布于 2018-07-31 12:49:27

你可以试试:

代码语言:javascript
运行
复制
ie.document.querySelector("#home_tab_label_98").Click
ie.document.querySelector("#home_tab_label_98").FireEvent "onclick"

代码语言:javascript
运行
复制
ie.document.parentwindow.execscript "SelectHomeTab(98)"

元素的实际选择是由CSS选择器进行的,因此#home_tab_label_98使用id home_tab_label_98来针对该元素。"#"是给id的。

如果找不到对象,那么:

  1. 在尝试选择或尝试在循环中选择之前,确保您有一个暂停;
  2. 检查嵌套在其中的任何表单/框架/iframe标记。这些需要导航才能获得元素;
  3. 记住,在任何单击事件或表单提交后,您都需要While .Busy Or .readyState <> 4: DoEvents: Wend

仍然不起作用:

请出示更多的html。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51613422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档