WebDriver无法找到“新加载元素”的xpath。

3

我目前正试图从网站上爬取一些信息,但遇到了困难。

为了获得所需的数据,我需要从列表中选择正确的货币。 我点击链接更改货币,并通过JavaScript获取另一个包含列表的HTML块,并打开一个叠加层,在那里我可以选择正确的货币。

我尝试定位包含列表的div:

driver.find_elements_by_xpath("//html/body/div[19]/div[2]/div/div/div[2]/form/div[2]")

我尝试了列表本身,但是我无法找到该元素。

然后我想查看是否找到了某些内容,并使用以下代码:

len(driver.find_elements_by_xpath("//html/body/div[19]/div[2]/div/div/div[2]/form/div[2]"))

返回答案0,因此我的Webdriver无法定位新添加的HTML块。

这是新添加的HTML:

<div class="module">
    <div class="modal_mask" style="opacity: 0.5;"/>
        <div class="modal_scroller">
            <div class="modal_container" style="margin-top: 164.5px;">
                <div class="modal_ship" style="margin: 0px auto;">
                    <div class="modal_title">
                        Address  Currency
                        <i onclick="modal_remove();">×</i>
                    </div>
                    <div class="modal_ship_con">
                        <h3>Please select your shipping destination & currency</h3>
                        <p>Price may differ based on your Shipping destination.</p>
                        <form action="#" method="get">
                            <input value="81" name="country_sel" type="hidden"/>
                            <input value="USD" name="currency_sel" type="hidden"/>
                            <div class="currency">
                                <b>Currency:</b>
                                <div class="currency_list">
                                    <div class="active">
                                        <i class="arrow_a">
                                            <i/>
                                            </i>
                                        <span>
                                            USD
                                            <u>US$</u>
                                        </span>
                                    </div>
                                    <div class="currency_box" style="display: none;">
                                        <ul>
                                            <li sel="USD">
                                                USD
                                                <u>US$</u>
                                            </li>
                                            <li sel="EUR">
                                                EUR
                                                <u>€</u>
                                            </li>
                                            <li sel="GBP">
                                                GBP
                                                <u>£</u>
                                            </li>
                                            <li sel="AUD">
                                                AUD
                                                <u>AU$</u>
                                            </li>
                                            <li sel="CAD">
                                                CAD
                                                <u>CA$</u>
                                            </li>
                                        </ul>
                                    </div>
                                </div>
                            </div>
                            <div class="submit">
                                <input onclick="saveShip(0);" value="Save" type="button"/>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>

这是我需要点击的位置:

<div class="active">
    <i class="arrow_a">
        <i/>
        </i>
    <span>
        USD
        <u>US$</u>
    </span>
</div>
所以我的问题是:有没有可能获取最新添加的HTML代码?是否有类似于“刷新webdriver”的东西? 问候

如果您没有提供包含HTML代码的最小完整示例,那么几乎不可能帮助您。 - Jeroen Heier
首先,这种XPATh是为了被破解而生的。您应该创建可靠的XPaths。请发布有关您的页面和HTML的更多详细信息。 - Tarun Lalwani
我知道不应该使用绝对引用,但这只是一个快速而简单的原型。 - acincognito
1个回答

0

我认为你可以在尝试捕捉想要点击的按钮之前,简单地使用time.sleep()。

只需使用这个:

    import time
    time.sleep(2) #you can keep this behind the code for clicking the button

这将使Selenium等待一段时间,以便代码可以加载,然后只有Selenium才会单击它

您可以保留任意秒数而不是2,我只是举个例子


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,