gpt4 book ai didi

vba - 与 web 下拉菜单交互,.dispatchEvent

转载 作者:行者123 更新时间:2023-12-04 20:40:59 25 4
gpt4 key购买 nike

我正在开发一种网络爬虫,可以从各种网站拉回商品的价格。我遇到的问题是在 amazon.com 上,在具有多个选项(即尺寸)的项目上,我能够进行交互并更改下拉选择选项,但我无法让网站回发和显示该选项的具体价格。我意识到这不是一个不常见的问题,但大多数人似乎通过使用 .dispatchEvent 方法而不是 .fireEvent 解决了他们的问题。这似乎对我不起作用。

下拉选项(仅显示前 5 个):

            <option value="-1" id="native_size_name_-1" data-a-id="size_name_-1" selected=""> Select</option>    

<option value="0,B001249LAS" class="dropdownAvailable" data-a-css-class="dropdownAvailable" id="native_size_name_0" data-a-id="size_name_0" data-a-html-content="44W x 29L">
44W x 29L
</option>

<option value="1,B001249KAE" class="dropdownAvailable" data-a-css-class="dropdownAvailable" id="native_size_name_1" data-a-id="size_name_1" data-a-html-content="44W x 30L">
44W x 30L
</option>

<option value="2,B001243XPM" class="dropdownAvailable" data-a-css-class="dropdownAvailable" id="native_size_name_2" data-a-id="size_name_2" data-a-html-content="44W x 32L">
44W x 32L
</option>

<option value="3,B001243XRK" class="dropdownAvailable" data-a-css-class="dropdownAvailable" id="native_size_name_3" data-a-id="size_name_3" data-a-html-content="44W x 34L">
44W x 34L
</option>

<option value="4,B001243Z00" class="dropdownAvailable" data-a-css-class="dropdownAvailable" id="native_size_name_4" data-a-id="size_name_4" data-a-html-content="46W x 29L">
46W x 29L
</option>


<option value="5,B001245XG4" class="dropdownAvailable" data-a-css-class="dropdownAvailable" id="native_size_name_5" data-a-id="size_name_5" data-a-html-content="46W x 30L">
46W x 30L
</option>

</select><span style="min-width: 0%;" tabindex="-1" id="dropdown_selected_size_name" data-a-class="aui-variation a-fastclick-disable" class="a-button a-button-dropdown aui-variation a-fastclick-disable"><span class="a-button-inner"><span class="a-button-text a-declarative" data-action="a-dropdown-button" aria-haspopup="true" role="button" tabindex="0"><span class="a-dropdown-prompt"> Select</span></span><i class="a-icon a-icon-dropdown"></i></span></span></span>

Firefox 向我展示了与下拉列表相关的事件:
"native_dropdown_selected_size_name").onchange = function() {
TwisterNonJs.handleDropDown[0]();

这是我的代码,Excel 似乎可以很好地编译 .dispatchEvent 方法,但 IE 在启动时不会触发。

网址路径 = http://www.amazon.com/Lee-Big-Tall-Dungarees-Carpenter-Original/dp/B001243Z00/
elementid = "priceblock_ourprice"(带报价)
Sub getPrice(URLPath As String, elementid As String)

Set IE = CreateObject("internetexplorer.application")

IE.Visible = True
navigate:
IE.navigate URLPath


Do While IE.readystate <> 4: DoEvents: Loop
Set doc = CreateObject("htmlfile")
Set doc = IE.document

If doc Is Nothing Then GoTo navigate
doc.getElementById("native_dropdown_selected_size_name").Focus
doc.getElementById("native_dropdown_selected_size_name").SelectedIndex = 2

Dim objEvent
Set objEvent = doc.createEvent("HTMLEvents")
objEvent.initEvent "change", False, True
doc.getElementById("native_dropdown_selected_size_name").dispatchEvent objEvent

Do While IE.readystate <> 4: DoEvents: Loop

pricestr = doc.getElementById(elementid).innertext

最佳答案

经过多次谷歌搜索,我找到了答案。我在 .initEvent 行中有向后的 True & False 属性。我有:

objEvent.initEvent "change", False, True

它必须是:
objEvent.initEvent "change", True, False

希望这对将来的某人有所帮助。

关于vba - 与 web 下拉菜单交互,.dispatchEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33636790/

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