【问题标题】:Navigate to a tab of a website based on title name in VBA根据 VBA 中的标题名称导航到网站的选项卡
【发布时间】:2020-02-19 21:28:32
【问题描述】:

我正在尝试从 VBA 中的当前选项卡导航到下面 html 代码中显示的另一个选项卡。

<div title="0274 AP INVOICES SAP" data-bind="text: Name, attr: { title: Name }">0274 AP INVOICES SAP</div>

我尝试了以下方法:

ie.document.querySelector("[title*=AP INVOICES SAP].menu-row active-route").Click

但这给了我“对象'JScriptTypeInfo'的方法'querySelector'失败”错误,我还尝试了以下方法:

ie.document.querySelector("div[data-bind*='0274 AP INVOICES SAP']").Click

但这给了我“需要对象”的错误。

我应该怎么做才能正确导航到这个标签?如果您需要更多信息,请告诉我

【问题讨论】:

  • 看起来querySelector 参数在第一次尝试时格式错误,在第二次尝试中格式正确但返回一个数组 (?);假设querySelector 返回一个数组,那么您需要选择一个下标来调用Click 成员,例如ie.document.querySelector("div[data-bind*='0274 AP INVOICES SAP']")(0).Click

标签: javascript html vba web-scraping


【解决方案1】:

两行中的每一行都有一半的答案(语法方面)。

你需要

ie.document.querySelector("[title='0274 AP INVOICES SAP']").click

假设之前已经发生了适当的页面加载等待,并且此 title = value 组合是唯一的和/或您想要第一个;它不是动态的,它是点击事件的正确目标。

由于值字符串中的空格,您需要在其周围使用单引号。此外,在属性选择器之后,您不应使用不属于目标元素的类选择器。

如果您继续收到 JScriptTypeInfo 错误,我以前在使用 knockoutjs 的页面中看到过这种错误,您需要求助于 MS ScriptControl 和更多代码(在 32 位系统上)——我没有推荐,或通过不应该发生此问题的方法切换到使用 getElement(s)。你最终会得到一个类似 VBA 调用 JSCriptTypeInfo 的对象的数组,如果你检查它,你很可能会看到一个字符串,它表示我怀疑来自默认成员调用的对象(节点)数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多