我尝试单击IE中具有相同ID,相同类但不同onclick的按钮。我的代码使用第一个按钮,但无法单击第二个按钮。
Onclick元素将调用函数RaiseGdcP1(ItemLineNo)
。
我已经尝试使用IHTMLElement
循环我的代码来搜索Id btnGdcP1
and点击所有id但失败了。
这里我用来点击第一个按钮的代码
Set HTMLDoc = IE.document
HTMLDoc.parentWindow.execScript "window.confirm = function(){return true;};"
HTMLDoc.getElementById("btnGdcP1").Click
Application.Wait Now + TimeValue("00:00:10")
Html如下
<INPUT onclick=RaiseGdcP1(2) id=btnGdcP1 type=button value="GDC P1" name=btnGdcP1> "1st button
<INPUT onclick=RaiseGdcP1(3) id=btnGdcP1 type=button value="GDC P1" name=btnGdcP1> "2nd button
即使在我的excel中,每个按钮也有2行。我上面的代码只能单击第一个按钮。 我想点击这两个按钮。你能帮忙吗?
谢谢。
您可以使用attribute = value选择器进行区分
ie.document.querySelector("[onclick='RaiseGdcP1(2)']").click
您可能需要转义(),例如
ie.document.querySelector("[onclick='RaiseGdcP1\(2\)']").click
但我不这么认为。我认为逃避是因为没有引用,例如
ie.document.querySelector("[onclick=RaiseGdcP1\(2\)]").click
对于另一个
ie.document.querySelector("[onclick='RaiseGdcP1(3)']").click
您还可以将querySelectorAll()与#id选择器一起使用
Dim buttons As Object
Set buttons = ie.document.querySelectorAll("#btnGdcP1")
buttons.item(0).click '< first
buttons.item(1).click '< second
您也可以直接调用函数
ie.document.parentWindow.execScript "RaiseGdcP1(1)"
ie.document.parentWindow.execScript "RaiseGdcP1(3)"
如果两个id具有相同的值,则会出错。为了按预期工作,它必须是唯一的:https://www.w3schools.com/hTml/html_id.asp
将第二个id更改为唯一值(btnGdcP2)并在代码中使用它:
HTMLDoc.getElementById("btnGdcP1").Click
HTMLDoc.getElementById("btnGdcP2").Click