我正在使用Selenium basic编写一个excel宏,以自动从我使用的基于Web的工具下载数据。
使用硒,我需要以某种方式在excel的一列中选择200个单元格,然后将其发送到网页的文本框中。
下面的一行使用单个单元格A1成功完成了此操作:
driver.FindElementById("batch_requests").SendKeys [A1]
我的问题是:如何发送整个范围A1:A200
一次浏览一个循环太耗时,因为我需要一次粘贴数千个数据点,一次要粘贴200个。
在VBA(不是Selenium)中使用标准sendkey并不是一个好的解决方案,因为在宏在后台运行时将使用计算机。
那么,有没有一种方法可以将一定范围的单元格值发送到网页,而不仅仅是单个单元格?
提前感谢我可能收到的任何帮助或建议!
编辑-我最终使用的代码如下。这是满足我需要的@Qharrs答案(谢谢Qharr,如果没有您,我真的无法做到这一点。我确实尝试过;-))
我并不是说以下是最优雅的解决方案,但它会在每次使用的情况下都有效。
' Copy column A 200 cells at a time into webpage text input field
Dim clipboard As Object
Dim data As String
Dim myRange As Range
Set clipboard = GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
' See how many rows of data in column A
numRows = Range("A1", Range("A1").End(xlDown)).Rows.Count
' Step through column A, 200 cells at a time (until numRows is exceeded)
' and create a range to be copied to clipboard and sent to webpage via Selenium
' 'Batch_Requests' is ID of input field page element to send text to.
For x = 2 To numRows Step 200
Set myRange = Range("A" & x & ":A" & (x + 200))
myRange.Copy
With clipboard
.GetFromClipboard
data = .GetText
driver.FindElementById("batch_requests").SendKeys data
End With
' *****************************************************************************
' Insert Seleneium code here to manipulate the web page with the data
' *****************************************************************************
' Clear text input field
driver.FindElementById("batch_requests").Clear
' Go to next 200 in column A (until none left)
Next x
答案 0 :(得分:0)
这是基于sendKeys的。我认为硒还不错。我正在使用剪贴板生成要粘贴的文本
Option Explicit
Public Sub PasteInfo()
Dim d As WebDriver, clipboard As Object, data As String
Set d = New ChromeDriver
Const url = "https://codebeautify.org/Xpath-Tester"
With d
'.AddArgument "--headless"
.Start "Chrome"
.get url
[A1:A3].Copy
Set clipboard = GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
With clipboard
.GetFromClipboard
data = .GetText
End With
.FindElementById("xmlString").SendKeys data
Stop '<=Delete me later
.Quit
End With
End Sub