0

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

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

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

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

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

我注意到一件事 getAttribute 似乎与“复制”不同,因为当我尝试手动粘贴到单元格时,我永远不会得到“答案”。我希望做的是以某种方式“复制”该值,然后使用类似' Worksheets("Sheet1").Range("A2").PasteSpecial' 将'答案'粘贴到单元格A2中......虽然之后玩了一吨,我似乎无法让它工作。任何帮助将非常感激。

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

4

2 回答 2

3

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

请注意,这需要Microsoft Forms 2.0 Object Library在您的参考文献中进行检查。如果这没有出现,请将用户窗体添加到您的文件中,默认情况下它将显示为选中状态。

以下子例程会将一串文本放入剪贴板。运行后执行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

希望有帮助。:)

于 2013-11-14T11:21:29.243 回答
0

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

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

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

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

hth

于 2015-09-16T19:57:39.740 回答