使用Selenium将文本粘贴到Excel中

时间:2013-11-14 10:38:40

标签: excel vba excel-vba selenium selenium-webdriver

rSource设置为单元格A1的值,其中包含数字。

我的代码的下一部分打开了一个网站,并将rSource输入到字段'num',这只是一个输入框。然后单击该按钮,这将使网站计算输入数字的平方根,然后在“回答”框中显示它。

我的代码问题似乎是这一行:

variableName = driver.findElementByName("answer").getAttribute("value")

我想要的是获取'answer'的属性,该属性将是我之前输入的数字的平方根,然后将其粘贴到单元格A2中。

我注意到一件事getAttribute似乎与'复制'不一样,因为当我尝试手动粘贴到单元格时,我从未得到'回答'。我希望做的是以某种方式“复制”该值,然后使用类似'Worksheets(“Sheet1”)。范围(“A2”)。PasteSpecial'然后将'回答'粘贴到单元格A2中...虽然之后大量的游戏我似乎无法让它工作。任何帮助将不胜感激。

上面的代码是使用Selenium创建的,然后我使用VBA进行了修改。

2 个答案:

答案 0 :(得分:1)

正如我在评论中所说,Selenium可以使用SendKeys。但是,如果你真的需要复制粘贴操作,我建议改为使用Clipboard

请注意,这需要在您的参考资料中检查Microsoft Forms 2.0 Object Library。如果没有出现,请将UserForm添加到您的文件中,默认情况下它将显示为已选中。

以下子例程会将一串文本放入剪贴板。运行此命令后执行Ctrl-V将模拟粘贴操作。

Sub Boom()
Dim DataObj As MSForms.DataObject
Set DataObj = New MSForms.DataObject
With DataObj
    .SetText "Answer"
    .PutInClipboard
End With
End Sub

只需将“答案”替换为您想要的任何值即可。更好的是,修改上面的内容以便能够接受如下文本字符串:

Sub Boom(Str As String)
Dim DataObj As MSForms.DataObject
Set DataObj = New MSForms.DataObject
With DataObj
    .SetText Str
    .PutInClipboard
End With
End Sub

现在你可以对它进行Boom("Answer"),它会将“答案”放到剪贴板上。然后,您可以使用Range("A1").PasteSpecial xlPasteAll或其他任何内容粘贴它。

希望这可以帮到你。不是Selenium路径,但至少它是一个非常干净的选择。 :)

编辑:要使用Selenium的SendKeys,它就像:

Sub CopyTest()

Dim Sel As New SeleniumWrapper.WebDriver
Dim keys As New SeleniumWrapper.keys

Sel.SendKeys keys.Control & "c"

End Sub

希望有所帮助。 :)

答案 1 :(得分:0)

有一个简单的解决方法。不要使用复制粘贴。将.getattribute (value)替换为.text

variableName = driver.findElementByName("answer").Text

仅供参考,对于多个元素,我使用.GetData,如下所示:

arrayName = driver.findElementsByClassName("answer").GetData

HTH