问题标签 [ie-automation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2023 浏览

wpf - Internet Explorer 实例 DocumentComplete 未触发

我正在尝试从 WPF 应用程序创建 Internet Explorer 的实例,加载保存的本地文件,并在加载文件后进行一些进一步的处理。但是,尽管文件在 Internet Explorer 窗口中可见,但该DocumentComplete事件永远不会触发:

当我导航到非本地 URL(例如http://www.google.com)时,该DocumentComplete事件会触发。

NavigateComplete2事件存在相同的行为。

我尝试使用类成员方法而不是 lambda 表达式(一旦方法退出,lambda 表达式可能会超出范围?)同时使用AddressOfand Handles,但这没有帮助。

我必须做什么才能让DocumentComplete事件触发?

(注意:页面没有框架。)

更新

此代码正在类库中使用,因此我无法使用 WebBrowser 控件,因为它无法在代码中实例化。

正如 SimonMourier 在评论中指出的那样,可以在代码中实例化 WebBrowser:

尽管 LoadCompleted 事件仍然不会触发,但 Navigated 事件会触发,而且它似乎足以满足我的目的。(显然,WebBrowser 必须可见才能使 LoadCompleted 触发 - 请参见此处此处- 由于我没有在窗口的上下文中使用 WebBrowser,因此我认为这在我的情况下甚至是不可能的。 )

0 投票
1 回答
3212 浏览

ruby - 无法获取浏览器 (Selenium::WebDriver::Error::NoSuchWindowError) 仅适用于 IE

启动浏览器并访问 URL 后,我立即面临以下错误:

无法获取浏览器 (Selenium::WebDriver::Error::NoSuchWindowError) 仅适用于 IE

我的代码:

我已经完成的解决方法:

  1. 按照Watir中的建议,在第一次 goto 后丢失浏览器连接中的所有区域保持相同的级别
  2. 如果 Selenium IDE 服务器尝试不同的版本
  3. 尝试更新我的 Watir-webdriver 和 selenium-webdriver gem

我的解决方法都没有给我一个积极的信号。

有人可以给我一个关于如何解决这个问题的建议吗?

0 投票
1 回答
54 浏览

arrays - 带有数组的 IE 自动化

您好,我是我公司的零件分析师。我在我们的在线目录中搜索引擎序列号,以查看网站上是否为客户提供所需信息。我每个月要检查大约三千个号码。我有一个 Excel 表,我从中复制发动机序列号并将其粘贴到在线目录的搜索中。这是一项非常乏味的任务。我一直在研究一个宏来自动化这个过程。我在宏中有一个数组。我希望数组跳过不需要搜索的序列号。到目前为止,宏将打开浏览器到电子目录并循环遍历数组,突出显示包含数组中值的所有序列号。我现在需要数组来跳过这些值。

设想

  1. 我在 excel 中单击一个按钮,它会打开所需的文件并开始在 A 列中搜索序列号。
  2. 如果 F2 = Y 则跳过在目录中搜索 A2,但是如果 F2 = N 则搜索 A2
  3. 如果搜索A2返回所需信息,则在F2中输入Y,否则在F2中输入N,转到A3并重复过程。

我搜索了很多论坛,但我一直无法找到解决方案。我的宏在下面。我需要帮助来完成宏。我试图让数组跳过数组中的值并通过在 if 语句中添加 Not 来突出显示所有其他值。这不起作用,而是当我在 if 语句中添加“Not”时突出显示所有序列号。任何建议表示赞赏。

结束子

在此处输入图像描述

0 投票
1 回答
297 浏览

c++ - MSHTML:图像插入回调

目前,我正在使用 MSHTML 组件将 HTML 编辑器嵌入到 C++ WinAPI 应用程序中。

我已经完成了所有设置(激活编辑模式、更改字体等),但现在我必须支持插入图像。MSHTML 已经内置了对它的支持,但据我所知,这种支持还不够。

不知何故,我需要一种方法来拦截将图像插入 HTML 编辑器,因为我必须在应用程序的 UI 中创建图像列表。因此,每当用户使用 MSHTML 组件的默认对话框插入图像或更新其源(例如从 file://xyz.jpg 到 file://abc.jpg)时,我希望我的代码得到通知.

我已经看过“编辑设计器”的 conecpt、IHTMLEditHost 的实现或 DWebBrowserEvents2 接口。但似乎没有什么能解决问题。

也许有人可以给我一个提示?

0 投票
1 回答
559 浏览

html - VBA IE 自动化:从元素内获取 URL

我试图从“pShowMore”类的第二个元素中获取 URL。

我有这个:

我得到错误:438-“对象不支持属性或方法”进行检索(即 wd.document .....)

我该怎么做才能在 href 中获取 URL?另外,为什么它不支持属性或方法?

0 投票
1 回答
2269 浏览

javascript - 使用 Excel VBA 的 IE 自动化:anchor.click 调用函数不起作用 javascript web 对话框

我对 IE 自动化、javascript 和框架比较陌生。我也不确定我是否有与 IE 自动化弹出的 VBA-Handle Javascript相同的问题。请继续阅读。

先决条件:IE11、VBA for Excel (2010)

所以我试图访问网页对话框的详细信息,您将在其中: 1. 单击一个按钮(以验证给定邮政编码的地址) 2. 一个包含框架的自定义网络对话框打开,要求您从列表中选择该特定邮政编码适用的城市。城市列表不是组合框,而是显示在表格中的锚元素。3. 所以我使用 element.click 单击特定城市,但没有任何反应。

用手动鼠标单击相同的锚元素会触发 javascript 事件 onclick,顺便调用另一个函数。

HTML:

和 JavaScript:

我的代码:

anchorElem.Click 部分不起作用。webdialog 弹出窗口没有选择anchorElem,也没有关闭。帮助!我做错了什么?

0 投票
2 回答
1877 浏览

internet-explorer - FoxPro Internet Explorer COM 自动化:点击在 IE 10 及更高版本中不起作用?

我最近需要更新一个旧的FoxPro遗留应用程序,该应用程序使用 Internet Explorer 自动化来驱动网页的内容,方法是单击一些 href 链接并将数据输入表单并提交。

这曾经工作得很好,但是使用 IE 11 (windows 10) 和 IE 10 (Windows 7) 检查最新版本的 Windows 我看到对元素的任何点击事件调用都没有效果,并且它们静默失败 - 没有错误,但也没有点击。

在上面的代码中, .click() 事件触发器都没有任何效果。然而,对文本框的分配工作正常,因此页面是脚本化的。

有谁知道发生了什么变化或什么可能影响行为,从而使以前工作的自动化事件代码不再起作用?

0 投票
2 回答
1029 浏览

vba - 在 Internet Explorer 中自动单击(扩展)加号

我正在致力于将一些数据自动输入到 Intranet 网页中。过去,我曾成功使用此类代码单击复选框,但无法使其在扩展行的加号上工作。下面的代码什么也不做,也不提示错误,代码运行正常。

这是我的代码:

相关的 HTML 行是:

(我要点击的内容可能是可变数量的,具有不同的数字标识符“iconShowA(x)”)

(我也需要避免点击这些)

0 投票
1 回答
599 浏览

vbscript - 使用 VBScript 在 IE 中上传文件时处理打开的窗口

在 IE 自动化中,如何处理通过 vbscript 单击“上传文件”或“附加”按钮时打开的窗口?

需要明确的是,我已经自动化,直到按下“上传”按钮。之后我需要填写文件路径,并且需要在新打开的窗口中自动按下打开按钮。这是使用 vbscript 或任何其他方式处理该窗口的任何方式吗?

0 投票
1 回答
8875 浏览

vba - Set iDoc = IE.Document 在 VBA 中给出运行时错误

我有奇怪的问题。我使用的是 32 位版本的 IE 10。最终用户使用的是 64 位版本的 IE10

对我来说set iDoc = IE.Document,在下面的代码片段中工作正常。但对于最终用户,我得到“类型不匹配错误”。

下面是我的代码:

请注意:IE.Document.getElementById("login").Value = uName对我们双方都很好。