【问题标题】:Webdriver cannot find xpath of "new loaded element"Webdriver 找不到“新加载元素”的 xpath
【发布时间】:2018-01-21 00:37:45
【问题描述】:

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

因此,为了获得我想要的数据,我需要从列表中选择正确的货币。我单击链接更改货币,然后通过 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,所以我的 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 代码在内的最小且完整的示例,几乎不可能为您提供帮助。
  • 首先,这种 XPATH 是为破解而生的。您应该创建可靠的 XPath。发布有关您的页面和 html 的更多详细信息
  • 我知道你不应该使用绝对引用,但这应该是一个快速而肮脏的原型。

标签: javascript python selenium web-scraping


【解决方案1】:

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

就用这个吧:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-19
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 2016-03-20
    相关资源
    最近更新 更多