rSource设置为单元格A1的值,其中包含数字。
我的代码的下一部分打开了一个网站,并将rSource输入到字段'num',这只是一个输入框。然后单击该按钮,这将使网站计算输入数字的平方根,然后在“回答”框中显示它。
我的代码问题似乎是这一行:
variableName = driver.findElementByName("answer").getAttribute("value")
我想要的是获取'answer'的属性,该属性将是我之前输入的数字的平方根,然后将其粘贴到单元格A2中。
我注意到一件事getAttribute似乎与'复制'不一样,因为当我尝试手动粘贴到单元格时,我从未得到'回答'。我希望做的是以某种方式“复制”该值,然后使用类似'Worksheets(“Sheet1”)。范围(“A2”)。PasteSpecial'然后将'回答'粘贴到单元格A2中...虽然之后大量的游戏我似乎无法让它工作。任何帮助将不胜感激。
上面的代码是使用Selenium创建的,然后我使用VBA进行了修改。
答案 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