- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我发布在 IE 9 not accepting SendKeys to download a file ,但是这个问题与我收到的答案足以证明另一个问题的合理性。我的问题是我无法让 IE 9 接受任何 SendKeys
.我尝试了 Page Down、Tab 和所有 F# 键,但它们都不起作用。
这是我正在使用的代码:
Dim ie As Object
'This creates the IE object
Sub initializeIE()
'call this subprocedure to start internet explorer up
Set ie = CreateObject("internetexplorer.application")
pos = 1
End Sub
'Initialize the class object
Private Sub Class_Initialize()
initializeIE
End Sub
Function followLinkByText(thetext As String) As Boolean
'clicks the first link that has the specified text
Dim alink As Variant
'Loops through every anchor in html document until specified text is found
' then clicks the link
For Each alink In ie.document.Links
If alink.innerHTML = thetext Then
alink.Click
'waitForLoad
Application.Wait Now + TimeValue("00:00:01")
Application.SendKeys "{PGDN}", True
Application.SendKeys "{PGUP}", True
'I've also tried calling it without Application before it
SendKeys "{F1}", True
SendKeys "{F2}", True
'Etc... Each of these not being received by IE 9
followLinkByText = True
Exit Function
End If
Next
End Function
Class_Initialize
中初始化的。子。我不确定这是否有帮助,但我真的不知道为什么这不起作用,以及如何将 key 发送到 IE 的任何帮助将不胜感激。
最佳答案
这实际上是 my answer 的副本至this question ,但它可能仍然适用。
当您尝试 SendKeys
时,IE 窗口是否处于事件状态? ?如果没有,这将解释它不起作用。
要激活您的窗口:
在你的模块的开头,放这行代码:
Public Declare Function SetForegroundWindow Lib "user32" (ByVal HWND As Long) As Long
SetForegroundWindow
Windows 内置的功能。
Dim HWNDSrc As Long
HWNDSrc = ie.HWND
SetForegroundWindow HWNDSrc
SendKeys
做),您仍然可以使用代码中的对象进行交互。
Public Sub WaitForIE(myIEwindow As InternetExplorer, HWND As Long, WaitTime As Integer)
' Add pauses/waits so that window action can actually
' begin AND finish before trying to read from myIEWindow.
' myIEWindow is the IE object currently in use
' HWND is the HWND for myIEWindow
' The above two variables are both used for redundancy/failsafe purposes.
' WaitTime is the amount of time (in seconds) to wait at each step below.
' This is variablized because some pages are known to take longer than
' others to load, and some pages with frames may be partially loaded,
' which can incorrectly return an READYSTATE_COMPLETE status, etc.
Dim OpenIETitle As SHDocVw.InternetExplorer
Application.Wait DateAdd("s", WaitTime, Now())
Do Until myIEwindow.ReadyState = READYSTATE_COMPLETE
' Wait until IE is done loading page and/or user actions are done.
Loop
Application.Wait DateAdd("s", WaitTime, Now())
While myIEwindow.Busy
DoEvents ' Wait until IE is done loading page and/or user actions are done.
Wend
On Error Resume Next
' Make sure our window still exists and was not closed for some reason...
For Each OpenIETitle In objShellWindows
If OpenIETitle.HWND = HWND Then
If Err.Number = 0 Then
Set myIEwindow = OpenIETitle
Exit For
Else
Err.Clear
End If
End If
Next OpenIETitle
On Error GoTo 0
End Sub
' Added by Gaffi
Public Declare Function SetForegroundWindow Lib "user32" (ByVal HWND As Long) As Long
Dim HWNDSrc As Long
Dim ie As Object
'This creates the IE object
Sub initializeIE()
'call this subprocedure to start internet explorer up
Set ie = CreateObject("internetexplorer.application")
' Added by Gaffi
HWNDSrc = ie.HWND
pos = 1
End Sub
'Initialize the class object
Private Sub Class_Initialize()
initializeIE
End Sub
Function followLinkByText(thetext As String) As Boolean
'clicks the first link that has the specified text
Dim alink As Variant
'Loops through every anchor in html document until specified text is found
' then clicks the link
For Each alink In ie.document.Links
If alink.innerHTML = thetext Then
alink.Click
'waitForLoad
' Added by Gaffi
WaitForIE ie, HWNDSrc, 1
SetForegroundWindow HWNDSrc
'Application.Wait Now + TimeValue("00:00:01")
Application.SendKeys "{PGDN}", True
Application.SendKeys "{PGUP}", True
'I've also tried calling it without Application before it
SendKeys "{F1}", True
SendKeys "{F2}", True
'Etc... Each of these not being received by IE 9
followLinkByText = True
Exit Function
End If
Next
End Function
关于vba - IE 9 不接受 SendKeys,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11655591/
其使用格式为: object.SendKeys string "object":表示WshShell对象 "string":表示要发送的按键指令字符串,需要放
如何使用命令 sendKeys(Keys.TAB) 和 sendKeys("text") 填写列中的几个字段。例如:页面底部的“联系我们”表单中有 3 个字段: 姓名 电子邮件 留言和“提交”按钮。
sendkeys(keys.Down) 和 sendkeys(keys.Arrow_Down) 之间有什么区别在 Selenium java中 最佳答案 没有区别,在以前版本的 selenium 中,
我的测试是在搜索文本框中输入键(主要是ajax),然后按键盘上的回车键。没有“开始”搜索的按钮,因此我们使用 Enter 键。 我使用 ChromeDriver,因为我们的应用程序在此流程中不支持 F
我试图在 sendKeys 方法 [type WebElement] 中将“String”作为参数发送,但系统将其用作 char 序列,所以我没有得到正确的输出。 public static
我想在新窗口中打开应用程序的链接。使用操作类在我当前所在的同一窗口中打开链接。 我尝试在多个应用程序的 Chrome 驱动程序和 Firefox 驱动程序上使用带有以下代码的 Actions 类,但没
据我所知,有两种使用 Selenium 进行输入的方法: new Actions(webDriver).sendKeys("text to send").perform(); webElement.s
我正在使用 Selenium 通过 VS Code 用 Java 进行编写。 我无法编译这行代码,因为 sendKeys 方法下有一条红线。 代码行是: driver.findElement(By
我正在使用以下过程作为 OnTime 方法的一部分: Public Sub Countdown() ThisWorkbook.Activate SendKeys ("{ESC}")
我是 VBA 的新手,我的研究表明我不应该使用 .SendKeys,因为它不可靠。我应该为以下使用什么替代代码? Application.SendKeys ("{Home}") 最佳答案 这看起来选择
我正在使用 .SendKeys()在 Excel VBA 中将击键发送到我正在使用 shell .AppActive 激活的外部窗口方法。问题是 SendKeys只是行为不一致,有时发送 key ,有
我正在使用 (new Actions(driver).sendKeys(String).perform() 将输入发送到 webdriver。但是,我一直得到不一致的结果。有时 String 会完美发
我用 Java 编写了脚本,它正在 Chrome 浏览器中运行。我有一个用户名字段、密码字段和一个登录按钮。甚至在完成用户名字段中的输入之前,它就开始在密码字段/登录按钮上执行操作。 这是我的代码,
我使用 sendkey 访问 Power Query 并连接到 SharePoint 文件夹。一切都很顺利,直到出现 Power Query 数据预览对话框。 如何允许 sendkey 在对话框出现后
我在输入一些特殊字符时遇到了一些问题 SendKey.Send("~!@#$%^&*()_+|") . 当我尝试输入 ~!@#$%^&*()_+| 时, 只有 !@#$*_|已输入。 有办法解决这个问
我创建了一个键盘应用程序,它保持在顶部,但不获取焦点,因此在触摸屏上它会通过 SendKeys 将您按下的任何键转发到事件应用程序。 它与我尝试过的每个应用程序都完美配合……当然,除了我实际需要它使用
我正在尝试使用 sendkeys,但将它发送到一个非焦点程序。例如,我想使用 sendkeys 到 Notepad - Untitled,但它没有被聚焦。抱歉,如果不清楚,我会详细说明。我当前的代码是
我希望我的 C# 程序在继续之前关闭某个遗留应用程序。使用 ctrl+x 可以立即关闭旧版应用程序。我可以使用 Sendkeys 来做到这一点,但我听说 sendkeys 可能有点不稳定。有没有其他方
您好,我已经在 login-page.js 中编写了这段代码 我不知道为什么会出现错误 失败:无法读取未定义的属性“sendKeys” 我在 login_spec.js 上调用了这个页面 我无法在 P
我在表单中有两个输入字段,它们的来源在下面提到 我正在尝试在 selenium 网络驱动程序 (Firefox) 中使用以下命令发送输入 driver.findElement(By.cssSele
我是一名优秀的程序员,十分优秀!