碎片:在ifram中找不到元素

2024-09-27 21:27:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从http://www.dresslink.com/women-woolen-winter-trench-double-button-fur-collar-coat-p-9442.html点击一个名为“估计运费”的链接 这将打开一个iframe覆盖,它通过ajax获取内容并填充它。在

这是密码

from splinter import Browser

browser = Browser('phantomjs')

def extract(url):
        browser.visit(url)
        browser.find_by_css(".floatl.shipping_fee a").click()
        browser.is_element_present_by_id('global_popup_login_iframe', wait_time=10)
        with browser.get_iframe('global_popup_login_iframe') as iframe:
                iframe.is_element_present_by_id('dyanmic_shipping_list', wait_time=10)
                shippingprice = iframe.find_by_tag('img')
                print shippingprice[1]['src']

extract('http://www.dresslink.com/women-woolen-winter-trench-double-button-fur-collar-coat-p-9442.html'

问题是在iframe中似乎找不到元素,我尝试过用css和xpath查找,结果是一样的。在

^{pr2}$

那里肯定有一个img标签,但它找不到它。在


Tags: browsercomhttpbywwwbuttondoubleiframe
2条回答

它没有很好的文档记录,所以需要一点时间来解决它,我昨晚遇到了同样的问题,所以我把我的方法贴在这里。Splinter对iframes有一个非常简单的解决方法!在

with br.get_iframe('Name_of_iframe') as iframe:
    iframe.fill("Name_of_element_to_be_filled","Text_to_be_filled")

在我的例子中,元素的名称是随机生成的字符串,因此不能使用上面的内容。如果您遇到这样的问题,那么就通过标记找到它(在我的例子中是input),从页面源中计算出它在iframe中按输入标记的顺序是多少。然后你可以使用这:在

^{pr2}$

我现在发现dyanmic_shipping_list在带有id="shipping_rates"div内,而不在iframeglobal_popup_login_frame内。因此,在iframe中搜索不会得到任何结果,因此会出现错误。但是打电话

browser.find_by_id("dyanmic_shipping_list").find_by_tag("img")[1]['src']

结果

^{pr2}$

这就是你想要的吗?在

编辑: 我用firefox作为webbrowser而不是phantomjs。这两个命令基本上是相同的,所以您可以使用firefox开发您的程序,然后让它与phantomjs一起工作。 有了firefox,你还可以使用firebug这样的插件来查看页面,这会为你节省大量的时间吗

相关问题 更多 >

    热门问题