我试图从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标签,但它找不到它。在
它没有很好的文档记录,所以需要一点时间来解决它,我昨晚遇到了同样的问题,所以我把我的方法贴在这里。Splinter对iframes有一个非常简单的解决方法!在
在我的例子中,元素的名称是随机生成的字符串,因此不能使用上面的内容。如果您遇到这样的问题,那么就通过标记找到它(在我的例子中是input),从页面源中计算出它在iframe中按输入标记的顺序是多少。然后你可以使用这:在
^{pr2}$我现在发现
dyanmic_shipping_list
在带有id="shipping_rates"
的div
内,而不在iframeglobal_popup_login_frame
内。因此,在iframe中搜索不会得到任何结果,因此会出现错误。但是打电话结果
^{pr2}$这就是你想要的吗?在
编辑: 我用firefox作为webbrowser而不是phantomjs。这两个命令基本上是相同的,所以您可以使用firefox开发您的程序,然后让它与phantomjs一起工作。 有了firefox,你还可以使用firebug这样的插件来查看页面,这会为你节省大量的时间吗
相关问题 更多 >
编程相关推荐