vba - Selenium VBA:填写 Windows 弹出窗口以上传文件
问题描述
由于 Chrome 浏览器,我无法与 Windows PopUp 交互以编写专用路径以使用 Selenium 在 VBA 中上传文件。
我在 Python 中找到了一些解决方案,但在 VBA 中没有。这就是为什么我尝试在 VBA 中转换代码但没有成功的原因。
在下面找到示例代码:
Sub Fullfil_Windows_PopUp()
Dim driver
Dim elem
Set Waiter = CreateObject("Selenium.Waiter")
Set Assert = CreateObject("Selenium.Assert")
Set driver = CreateObject("Selenium.ChromeDriver")
'open the browser and the page
driver.Get "https://fr.imgbb.com/"
While Waiter.Not(InStr(driver.Title, "ImgBB — Upload Image — Hébergement d'images gratuit")): Wend
'open upload window
Set elem = driver.FindElementsByXPath("//*[@id='home-cover-content']/div[2]/a").Item(1)
elem.Click
'Trial 1
driver.SwitchToWindowByTitle "Ouvrir" '--> NOK (error window not found)
driver.SendKeys "D:\Test.jpg"
'Trial 2
driver.SwitchToAlert.SendKeys "D:\Test.jpg" '--> NOK (error No Alert present)
'Trial 3
Set wsh = CreateObject("WScript.Shell")
wsh.SendKeys "D:\Test.jpg" '--> NOK (no action)
End Sub
提前感谢您的建议
解决方案
我使用“后门”将文件名填充到文件管理器窗口中。由于光标已经进入窗口的文件名字段,我在 VBS 中创建了一个外部脚本来写入文件名(以及 2x TAB + ENTER 来验证窗口)。
VBS文件的代码下面:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys "D:\Test.jpg"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{ENTER}"
我在使用 selenium 打开文件管理器窗口后执行此脚本:
Sub Fullfil_Windows_PopUp()
Dim driver
Dim elem
' Chrome browser
Set driver = CreateObject("Selenium.ChromeDriver")
'open the browser and the page
driver.Get "https://fr.imgbb.com/"
Sleep 1000
' Open upload window
Set elem = driver.FindElementsByXPath("//*[@id='home-cover-content']/div[2]/a").Item(1)
elem.Click
' Write the filename with VBS script
Set oWsh = CreateObject("Shell.Application")
oWsh.ShellExecute "D:\filename.vbs"
Set oWsh = Nothing
Sleep 1500
End Sub
但是我继续直接使用 Selenium 搜索解决方案,因为例如,文件名直接指示到 VBS 文件中,这并不容易像变体一样使用它。
推荐阅读
- xml - XSL 到 HTML:包含方法的问题
- azure - Azure AD B2C 中用于登录/注册的自定义 UI 给出错误
- reporting-services - SSRS 报告自动生成
- c++ - 为什么我的银行管理系统无法正常工作?
- audiokit - Audiokit 4.9 中的 AKSequencer.init()
- excel - 模拟简单的 VBA 宏以与 Google 表格兼容
- github - 列出特定存储库的所有分支
- python - xgb-wrapper 交叉验证 (xgb.cv) 的结果是什么?
- ios - Tableview 没有得到 Xib 文件的高度
- javascript - 在 TypeScript 中,构建 dist 文件夹时使模块别名工作的正确配置是什么?