excel - VBA在搜索框IE中插入数据
问题描述
当我在搜索框中插入几个词时,它会获取相关数据。我需要从中选择第一个选项。
有一个网站“ https://indiarailinfo.com/ ”当我从站框搜索“ADI”时,系统会获取名称中包含“ADI”的相关站?第一个选项总是显示非常接近它的匹配。如何使用 vba 代码从中选择第一个选项
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
ie.navigate "https://indiarailinfo.com/"
While ie.readyState <> 4: DoEvents: Wend
ie.Visible = True
ie.document.querySelector("[placeholder='from station']").Value = "ADI"
可以从该站点获得 HTML 代码
它在下拉菜单中带来第一个答案,例如“ADI/艾哈迈达巴德交界处”我如何才能在选定的情况下获得这个答案”
请建议
解决方案
自动化纯粹主义者不喜欢使用 javascript 来执行,但我将在这里使用 IE 来触发下拉菜单。如果我要走纯路线,我会使用硒。
Option Explicit
Public Sub MakeSelection()
Dim ie As InternetExplorer, t As Date, dropdown1 As Object
Set ie = New InternetExplorer
Const MAX_WAIT_SEC As Long = 5
With ie
.Visible = True
.Navigate2 "https://indiarailinfo.com/"
While .Busy Or .readyState < 4: DoEvents: Wend
With .document.querySelector("[placeholder='from station']")
.Focus
.Value = "ADI"
ie.document.parentWindow.execScript "document.querySelector('[placeholder^=from]').click();"
End With
t = Timer
Do
DoEvents
On Error Resume Next
Set dropdown1 = .document.querySelectorAll(".icol span")
On Error GoTo 0
If Timer - t > MAX_WAIT_SEC Then Exit Do
Loop While dropdown1.Length = 0
If dropdown1.Length > 0 Then
dropdown1.item(0).Click
End If
Stop
.Quit
End With
End Sub
对于使用 selenium basic 的自动化纯粹主义者
Option Explicit
Public Sub MakeSelection()
Dim d As WebDriver
Set d = New ChromeDriver
Const Url = "https://indiarailinfo.com/"
With d
.Start "Chrome"
.get Url
.FindElementByCss("[placeholder='from station']").SendKeys "ADI"
.FindElementByCss(".icol span").Click
Stop
.Quit
End With
End Sub
推荐阅读
- python - Django - 如何在 html 模板中创建链接打开应用程序并将对象值作为参数传递
- c++ - 命名空间内的 C++ 中的变量声明
- node.js - 使用过滤器查询子文档数组并使用猫鼬返回原始文档
- c# - Stomp.Net 示例:需要解释
- c - 在屏幕上设置装饰 GtkWindow 的框架位置
- sql - 从 MS Access 的范围内返回一个值
- python - 如何使用 Tesseract 对图像进行 OCR
- filter - Spring Integration - 过滤器 - 将消息发送到不同的端点
- json - 尝试使用 jq shell 脚本解析 JSON 数据时观察到语法错误
- php - 期待异常phpunit后继续测试