gpt4 book ai didi

html - 通过 VBA 使用 QuerySelector 单击 HTML 元素

转载 作者:行者123 更新时间:2023-11-28 00:40:23 25 4
gpt4 key购买 nike

我正在尝试使用 VBA 自动访问网页。我正在通过登录屏幕,但无法单击其中一个元素进入搜索屏幕。通常这并不太难,但似乎这个元素在 iframe 中?我不确定这是否是我看不到它的原因。我试图循环所有 A 标签并获得 nop 返回。我尝试使用查询选择器来达到我在过去展示过的效果。两者都无济于事。我已经尝试了 4 种不同的方法来获取标签,其想法是在匹配某些属性并单击之后执行 ForEach 循环:

    Set HTMLAs = HTMLDoc.getElementsByTagName("a")
Set HTMLAs = HTMLDoc.getElementsByTagName("tr")
Set HTMLAs = HTMLDoc.getElementsByTagName("td")
Set HTMLAs = HTMLDoc.getElementsByTagName("div")

我试过:

HTMLDoc.querySelector("a[title='Policy']").Click
'HTMLDoc.querySelector("a[href='/PolicySearch/policySearch_v30.cfm?module=policy&actionType=lookup']").Click 'no
'HTMLDoc.querySelector("a[href='/PolicySearch/policySearch_v30.cfm?module=policy&actionType=lookup']").Click 'no
'HTMLDoc.querySelector("A[href='/PolicySearch/policySearch_v30.cfm?module=policy&actionType=lookup']").Click 'NO
'HTMLDoc.querySelector("A[title='Policy']").Click 'no

而且这些都没有捕获元素。

这是我要点击的元素的 html:

<A title=Policy style="FONT-SIZE: 8pt; FONT-FAMILY: arial" 
href="/PolicySearch/policySearch_v30.cfm?
module=policy&amp;actionType=lookup" target=main nowrap>&nbsp; Lookup Policy
&nbsp;</A>

这是我第一次进入我想要的页面时框架的顶部:

<FRAMESET id=defaultFrame frameSpacing=0 border=0 frameBorder=no 
rows=70,21,*,21,1><FRAME noResize src="/systemInfo/ScriptX/titleBar.cfm"
frameBorder=0 name=titleBar scrolling=no application="yes"><FRAME noResize
src="/producerTOC.cfm" frameBorder=0 name=producerTOC scrolling=no
application="yes"><FRAMESET id=BottomRow cols=1,*><FRAME noResize
src="toc.cfm" frameBorder=0 name=toc marginWidth=0 scrolling=no
application="yes"><FRAME noResize src="main.cfm" frameBorder=0 name=main
application="yes"></FRAMESET><FRAME noResize
src="/systemInfo/ScriptX/footerFrame.cfm" frameBorder=0 name=footerFrame
scrolling=no application="yes"><FRAME noResize src="" frameBorder=0
name=utilityFrame scrolling=no application="yes"><NOFRAMES></NOFRAMES>

但从这里我不确定如何进行。非常感谢任何建议或指导。

从 iframe 到查找策略的 html 屏幕截图。 ScreenShot

点击“Lookup Policy”后的搜索表单

<FORM id=SearchForm onsubmit="return _CF_checkSearchForm(this)" method=get 
name=SearchForm action=/PolicySearch/policyAdvLookup_v30.cfm
target=searchResultFrame><TABLE class=TableSelection>
<TBODY>
<TR>
<TD class=HeaderCell>Policy Search</TD></TR>
<TR>
<TD class=SelectionCell>
<TABLE class=NoBorder>
<TBODY>
<TR>
<TD class=Right style="WIDTH: 2%" noWrap>&nbsp;</TD>
<TD class="Right Bold" style="WIDTH: 20%" noWrap>Search Criteria</TD>
<TD noWrap><A onclick="ToggleMode();return false;" id=ToggleModeLink
class=FloatR href="">- Advanced Search -</A> <INPUT onfocus=this.select();
id=searchField class=upperCase size=30 name=searchField class="upperCase"
jQuery112406813183503798275="4"><BUTTON id=SearchButton style="WIDTH: 130px"
type=submit name=SearchButton>Search</BUTTON></TD></TR>
<TR>
<TD id=SearchLabel class="Right Bold" colSpan=2 noWrap>Search By</TD>
<TD noWrap><INPUT onclick=LoadParam(1); id=searchOption title="Policy # /
Name" class=Blend CHECKED type=radio value=name name=searchOption>Policy # /
Name &nbsp; <INPUT onclick=LoadParam(2); id=searchOption title="Insured
Address" class=Blend type=radio value=address name=searchOption>Insured
Address &nbsp; <INPUT onclick=LoadParam(3); id=searchOption title="Dwelling
Location" class=Blend type=radio value=location name=searchOption>Dwelling
Address &nbsp;
<DIV id=LineSearchOptions><SPAN id=LineSearchOptions_1
name="LineSearchOptions_1"><INPUT onclick=LoadParam(6,true); id=searchOption
title="Driver Name / Lic Num" class=Blend type=radio value=name
name=searchOption>Driver Name / Lic Num &nbsp; <INPUT
onclick=LoadParam(6,false); id=searchOption title="Vehicle VIN" class=Blend
type=radio value=VIN name=searchOption>Vehicle VIN &nbsp; </SPAN></DIV></TD>
</TR>
<TR id=PolicyTypeRow name="PolicyTypeRow">
<TD class="Right Bold" colSpan=2 noWrap>Policy Type</TD>
<TD noWrap><SELECT onchange=ShowLineOptions(this.value); id=policyType
name=policyType> <OPTION selected value=0>All Policy Types</OPTION> <OPTION
value=4>Homeowner Policies</OPTION> <OPTION value=3>Dwelling Fire
Policies</OPTION> <OPTION value=1>Personal Auto Policies</OPTION></SELECT>
</TD></TR>
<TR id=SearchCriteriaDisplay name="SearchCriteriaDisplay">
<TD class=Right noWrap><A onclick="ClearParam(1);return false;" id=aClear
href="" name=aClear>[ X ]</A></TD>
<TD id=strSearchParamLbl class="Right Bold" noWrap
name="strSearchParamLbl">Policy # / Name</TD>
<TD noWrap><SPAN id=strSearchParamDisplay name="strSearchParamDisplay">
</SPAN><INPUT id=strSearchParam type=hidden name=strSearchParam></TD></TR>
<TR id=SearchCriteriaDisplay name="SearchCriteriaDisplay">
<TD class=Right noWrap><A onclick="ClearParam(2);return false;" id=aClear
href="" name=aClear>[ X ]</A></TD>
<TD id=strSearchParamLbl class="Right Bold" noWrap
name="strSearchParamLbl">Insured Address</TD>
<TD noWrap><SPAN id=strSearchParamDisplay name="strSearchParamDisplay">
</SPAN><INPUT id=strSearchParam type=hidden name=strSearchParam></TD></TR>
<TR id=SearchCriteriaDisplay name="SearchCriteriaDisplay">
<TD class=Right noWrap><A onclick="ClearParam(3);return false;" id=aClear
href="" name=aClear>[ X ]</A></TD>
<TD id=strSearchParamLbl class="Right Bold" noWrap
name="strSearchParamLbl">Dwelling Location</TD>
<TD noWrap><SPAN id=strSearchParamDisplay name="strSearchParamDisplay">
</SPAN><INPUT id=strSearchParam type=hidden name=strSearchParam></TD></TR>
<TR id=SearchCriteriaDisplay name="SearchCriteriaDisplay">
<TD class=Right noWrap><A onclick="ClearParam(4);return false;" id=aClear
href="" name=aClear>[ X ]</A></TD>
<TD id=strSearchParamLbl class="Right Bold" noWrap
name="strSearchParamLbl">Phone&nbsp;</TD>
<TD noWrap><SPAN id=strSearchParamDisplay name="strSearchParamDisplay">
</SPAN><INPUT id=strSearchParam type=hidden name=strSearchParam></TD></TR>
<TR id=TimeframeRow name="TimeframeRow">
<TD class="Right Bold" colSpan=2 noWrap>Recent Policies Only</TD>
<TD noWrap><INPUT id=historyTimeFrame CHECKED type=checkbox value=1200
name=historyTimeFrame> Exclude policies that expired prior to December
1918</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><INPUT
id=strSearchNameNum type=hidden name=strSearchNameNum> <INPUT
id=strSearchAddress type=hidden name=strSearchAddress> <INPUT
id=strSearchLocation type=hidden name=strSearchLocation> <INPUT
id=strSearchPhone type=hidden name=strSearchPhone> <INPUT
id=strSearchEmail type=hidden name=strSearchEmail> <INPUT id=strSearchLine
type=hidden name=strSearchLine> <INPUT id=strSearchLineType type=hidden
name=strSearchLineType> <INPUT id=displayType type=hidden value=0
name=displayType> <INPUT type=hidden value=0 name=isQuoteSearch> <INPUT
type=hidden value=policy name=module> <INPUT type=hidden value=lookup
name=actionType> </FORM>

当我点击包含几个搜索/导航选项的网页时:

<FRAMESET id=defaultFrame frameSpacing=0 border=0 frameBorder=no 
rows=70,21,*,21,1><FRAME noResize src="/systemInfo/ScriptX/titleBar.cfm"
frameBorder=0 name=titleBar scrolling=no application="yes"><FRAME noResize
src="/producerTOC.cfm" frameBorder=0 name=producerTOC scrolling=no
application="yes"><FRAMESET id=BottomRow cols=1,*><FRAME noResize
src="toc.cfm" frameBorder=0 name=toc marginWidth=0 scrolling=no
application="yes"><FRAME noResize src="main.cfm" frameBorder=0 name=main
application="yes"></FRAMESET><FRAME noResize
src="/systemInfo/ScriptX/footerFrame.cfm" frameBorder=0 name=footerFrame
scrolling=no application="yes"><FRAME noResize src="" frameBorder=0
name=utilityFrame scrolling=no application="yes"><NOFRAMES></NOFRAMES>
</FRAMESET>

表:

<TABLE id=MainTabText style="BORDER-TOP: 0px; HEIGHT: 19px; BORDER-RIGHT: 
0px; WIDTH: 100%; BORDER-BOTTOM: 0px; LEFT: 0px; MARGIN: 0px; BORDER-LEFT:
0px; TOP: 0px" cellSpacing=0 cellPadding=0 name="MainTabText"><TBODY>
<TR style="FONT-WEIGHT: bold">
<TD style="FONT-SIZE: 8pt; BORDER-TOP: 0px; FONT-FAMILY: arial; BORDER-
RIGHT: 0px; WIDTH: 1%; VERTICAL-ALIGN: middle; BORDER-BOTTOM: 0px; COLOR:
black; PADDING-BOTTOM: 0px; TEXT-ALIGN: left; PADDING-TOP: 0px; PADDING-
LEFT: 10px; BORDER-LEFT: 0px; LINE-HEIGHT: 8pt; PADDING-RIGHT: 0px" noWrap>|
<A title=Policy style="FONT-SIZE: 8pt; FONT-FAMILY: arial"
href="/PolicySearch/policySearch_v30.cfm?
module=policy&amp;actionType=lookup" target=main nowrap>&nbsp; Lookup Policy
&nbsp;</A> |<A title=Reports style="FONT-SIZE: 8pt; FONT-FAMILY: arial"
href="/Reports/reports.cfm" target=main nowrap>&nbsp; Reports &nbsp;</A> |<A
title=Agencies style="FONT-SIZE: 8pt; FONT-FAMILY: arial"
href="ProducerInfo/producerInfoLayout.cfm?producerID=10003" target=main
nowrap>&nbsp; Agency Info &nbsp;</A> |<A title="Upload Documents"
style="FONT-SIZE: 8pt; FONT-FAMILY: arial"
href="/PolicySearch/policySearch_v30.cfm?
module=Upload&amp;actionType=lookup" target=main nowrap>&nbsp; Upload
Documents &nbsp;</A> |<A title="Batch Viewer" style="FONT-SIZE: 8pt; FONT-
FAMILY: arial" href="/batch/batchViewer/batchViewerlayout.cfm" target=main
nowrap>&nbsp; Batch Viewer &nbsp;</A> |</TD>
<TD style="FONT-SIZE: 8pt; BORDER-TOP: 0px; FONT-FAMILY: arial; BORDER-
RIGHT: 0px; WIDTH: 99%; VERTICAL-ALIGN: middle; BORDER-BOTTOM: 0px; COLOR:
black; PADDING-BOTTOM: 0px; TEXT-ALIGN: right; PADDING-TOP: 0px; PADDING-
LEFT: 0px; BORDER-LEFT: 0px; LINE-HEIGHT: 8pt; PADDING-RIGHT: 10px"
noWrap>&nbsp;| <A style="FONT-SIZE: 8pt; FONT-FAMILY: arial"
href="/main.cfm" target=main nowrap>&nbsp; Home &nbsp;</A> | <A
onclick="LogoutCheck();blur();return false;" style="FONT-SIZE: 8pt; FONT-
FAMILY: arial" href="" nowrap>&nbsp; Logout &nbsp;</A> |</TD></TR></TBODY>

最佳答案

选择器正确

a[title=Policy]

如果有框架/iframe,则使用其属性来访问其 contentDocument。例如。如果框架有一个 id

ie.document.getElementById(frameid").contentDocument.querySelector("a[title=Policy]").click

关于html - 通过 VBA 使用 QuerySelector 单击 HTML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53823118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com