javascript - Webdriver 找不到 "new loaded element"的 xpath

标签 javascript python selenium web-scraping

目前我正试图从网上抓取一些信息,但我有点陷入了死胡同。

因此,为了获得我想要的数据,我需要从列表中选择正确的货币。我单击链接以更改货币,然后通过 Java 脚本,该网站获得了另一段包含列表的 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,因此我的网络驱动程序无法找到新添加的 html block 。

这是新添加的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 代码?是否有类似“刷新网络驱动程序”的东西?

问候

最佳答案

我认为您可以在 try catch 要单击的按钮之前简单地使用 time.sleep()。

只需使用这个:

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

这会让 selenium 等待一段时间,以便代码可以加载,然后只有 selenium 会点击它

您可以保留任何编号。秒而不是 2,我只是举个例子

关于javascript - Webdriver 找不到 "new loaded element"的 xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45653070/

相关文章:

javascript - 如何立即关闭 chrome 应用程序?

python - 使用多个嵌套 json 扩展数据框

python - 基于另一个数组子集 numpy 数组

python - Selenium 选中的节点文本

javascript - rails : Extra column when using wice_grid

javascript - 当屏幕小于 992px 时将 div 移动到另一个 div,对于大于 992px 的屏幕将其移动到原始位置

javascript - select2-selecting 事件没有被触发

python - 如何使用正则表达式解决这个问题?

java - 使用 selenium 和 java 找不到类

c# - 哪个网页元素标签更适合使用 Webdrive 定位和获取值(value)