Javascript 如何在具有相同id但不同onclick元素的VBA的IE上单击第二个按钮
我试着点击IE中的一个按钮,它有相同的ID,相同的类,但不同的onclick。我的代码使用第一个按钮,但无法单击第二个按钮。Javascript 如何在具有相同id但不同onclick元素的VBA的IE上单击第二个按钮,javascript,html,excel,vba,web-scraping,Javascript,Html,Excel,Vba,Web Scraping,我试着点击IE中的一个按钮,它有相同的ID,相同的类,但不同的onclick。我的代码使用第一个按钮,但无法单击第二个按钮。 Onclick元素将调用函数RaiseGdcP1(ItemLineNo) 我已经尝试使用ihtmlement循环我的代码以搜索IdbtnGdcP1,并单击所有Id,但失败 这里是我用来点击第一个按钮的代码 Set HTMLDoc = IE.document HTMLDoc.parentWindow.execScript "window.confirm = function
Onclick元素将调用函数
RaiseGdcP1(ItemLineNo)
我已经尝试使用ihtmlement
循环我的代码以搜索IdbtnGdcP1
,并单击所有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中,每个按钮也有两行。
上面的我的代码只能单击第一个按钮。我想点击这两个按钮。 你能帮我一下吗
谢谢。两个id值相同是错误的。它必须是唯一的,才能按预期工作: 将第二个id更改为唯一值(btnGdcP2),并在代码中使用该值:
HTMLDoc.getElementById("btnGdcP1").Click
HTMLDoc.getElementById("btnGdcP2").Click
两个id的值相同是错误的。它必须是唯一的,才能按预期工作: 将第二个id更改为唯一值(btnGdcP2),并在代码中使用该值:
HTMLDoc.getElementById("btnGdcP1").Click
HTMLDoc.getElementById("btnGdcP2").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.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
你的意思是在网络上改变它?严格来说这不是真的。您可以重复相同的id。@Ruzaini:更改HTML代码和javascript。@QHarr:可以,它不会产生错误,但它违背了id唯一性的目的。您希望从getElementById(multipleSameIDs)得到什么样的返回值?我会使用我在回答中使用的任何方法。如果我能控制html本身(拥有该网站),那将是另一回事。你的意思是在web中更改它吗?严格来说,这不是真的。您可以重复相同的id。@Ruzaini:更改HTML代码和javascript。@QHarr:可以,它不会产生错误,但它违背了id唯一性的目的。您希望从getElementById(multipleSameIDs)得到什么样的返回值?我会使用我在回答中使用的任何方法。如果我能控制html本身(拥有该网站),那将是另一回事。我将尝试最后一个选项。如果能够使用变量,我还想试试
ie.document.parentWindow.execScript“RaiseGdcP1(i)”
如果使用i变量作为索引,则可以将i合并到上述所有内容中。您也可以传递到querySelectorAll(#btnGdcP1”)。项(i)。单击“谢谢”。我认为它适用于querySelectorAll()。尝试调用函数,失败。我尝试了调用函数,但在第行按钮上出现错误。项(j)。单击“
运行时错误424 object required”,我将尝试最后一个选项。如果能够使用变量,我还想试试ie.document.parentWindow.execScript“RaiseGdcP1(i)”
如果使用i变量作为索引,则可以将i合并到上述所有内容中。您也可以传递到querySelectorAll(#btnGdcP1”)。项(i)。单击“谢谢”。我认为它适用于querySelectorAll()。尝试调用函数,失败。我尝试了,但在第行按钮上出现错误。项(j)。单击“
运行时错误424所需对象”