Vba 使用Selenium将文本粘贴到Excel中
rSource设置为单元格A1的值,其中包含一个数字 代码的下一部分将打开一个网站,并将rSource输入到字段“num”中,该字段只是一个输入框。然后单击按钮,这会导致网站计算输入数字的平方根,然后将其显示在“应答”框中 我的代码似乎存在以下问题:Vba 使用Selenium将文本粘贴到Excel中,vba,excel,selenium,selenium-webdriver,Vba,Excel,Selenium,Selenium Webdriver,rSource设置为单元格A1的值,其中包含一个数字 代码的下一部分将打开一个网站,并将rSource输入到字段“num”中,该字段只是一个输入框。然后单击按钮,这会导致网站计算输入数字的平方根,然后将其显示在“应答”框中 我的代码似乎存在以下问题: variableName = driver.findElementByName("answer").getAttribute("value") 我想要的是获取'answer'的属性,它将是我先前输入的数字的平方根,然后将它粘贴到单元格A2中 我注
variableName = driver.findElementByName("answer").getAttribute("value")
我想要的是获取'answer'的属性,它将是我先前输入的数字的平方根,然后将它粘贴到单元格A2中
我注意到一件事,getAttribute似乎与“复制”不同,因为当我尝试手动粘贴到单元格中时,我从未得到“答案”。我希望做的是以某种方式“复制”该值,然后使用类似“工作表(“Sheet1”).Range(“A2”).PasteSpecial”的东西将“答案”粘贴到单元格A2中。。。虽然我玩了很多次,但似乎还是没法让它发挥作用。任何帮助都将不胜感激
上面的代码是使用Selenium创建的,然后我使用VBA对其进行了修改。正如我在评论中所说的,
Selenium
可以使用SendKeys
实现这一点。但是,如果您确实需要复制粘贴操作,我建议您使用剪贴板
请注意,这需要在引用中检查Microsoft Forms 2.0对象库。如果没有显示,请向文件中添加一个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”)
,它会把“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
希望有帮助。:) 正如我在评论中所说,
Selenium
可以使用SendKeys
进行此操作。但是,如果您确实需要复制粘贴操作,我建议您使用剪贴板
请注意,这需要在引用中检查Microsoft Forms 2.0对象库。如果没有显示,请向文件中添加一个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”)
,它会把“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
希望有帮助。:) 正如我在评论中所说,
Selenium
可以使用SendKeys
进行此操作。但是,如果您确实需要复制粘贴操作,我建议您使用剪贴板
请注意,这需要在引用中检查Microsoft Forms 2.0对象库。如果没有显示,请向文件中添加一个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”)
,它会把“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
希望有帮助。:) 正如我在评论中所说,
Selenium
可以使用SendKeys
进行此操作。但是,如果您确实需要复制粘贴操作,我建议您使用剪贴板
请注意,这需要在引用中检查Microsoft Forms 2.0对象库。如果没有显示,请向文件中添加一个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”)
,它会把“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
希望有帮助。:) 有一个简单的解决方法。不要使用复制粘贴。将
.getattribute(value)
替换为.text
:
variableName = driver.findElementByName("answer").Text
仅供参考,对于多个元素,我使用.GetData
如下:
arrayName = driver.findElementsByClassName("answer").GetData
有一个简单的解决方法。不要使用复制粘贴。将
.getattribute(value)
替换为.text
:
variableName = driver.findElementByName("answer").Text
仅供参考,对于多个元素,我使用.GetData
如下:
arrayName = driver.findElementsByClassName("answer").GetData
有一个简单的解决方法。不要使用复制粘贴。答复