【发布时间】:2016-05-13 13:32:11
【问题描述】:
我试图让 selenium 在页面源完全呈现后捕获它,如果我转到页面并立即捕获只有部分页面已经呈现,如果我完全休眠 30 秒渲染,但我希望它更高效。
如果我们以https://twitter.com/i/notifications 为例,您会看到在页面加载后 5~ 秒后有一个 toast_poll 和一个时间线 XHR 请求。
我希望能够检测到其中一个请求并等待其中一个请求触发,这表明页面已完全加载。
我正在使用的网站会触发 console.log("Done"),因此如果我可以在 PhantomJS 和 Firefox 中检测到控制台命令,那么这将是比等待 XHR 请求更好的选择,只需等待 Done 出现在控制台中然后这就是页面已完全加载的指示器。
关于此帖的重复举报:
这个问题是关于 PhantomJS 和 Firefox 的,Detect javascript console output with python 的帖子来自一年多以前,给出的答案仅适用于 Chrome,我正在寻找 PhantomJS 和 Firefox 选项,我已经基于 StackOverflow 的思考是不可能的,所以我的文章开头是关于等待 XHR 请求的原因。
我已经尝试过以下代码,但它对我不起作用.. 即使网站抛出 console.log("Done"),我也得到零响应
from seleniumrequests import PhantomJS
from seleniumrequests import Firefox
from selenium import webdriver
import os
webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.User-Agent'] = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/37.0.2062.120 Chrome/37.0.2062.120 Safari/537.36'
webdriver.DesiredCapabilities.PHANTOMJS['loggingPrefs'] = { 'browser':'ALL' }
browser = PhantomJS(executable_path="phantomjs.exe", service_log_path=os.path.devnull)
browser = webdriver.Firefox()
browser.set_window_size(1400, 1000)
url = "https://website.com"
browser.get(url)
for entry in browser.get_log('browser'):
print entry
我无法使用注释掉的 browser = webdriver.Firefox() 进行测试,因为我不确定如何设置两批 DesiredCapabilities。
【问题讨论】:
-
@salomonderossi 不,这是关于
PhantomJS和Firefox的,该帖子仅关于 Chrome,我正在寻找 PhantomJS 和 Firefox 选项,我已经认为基于 StackOverflow 不是不可能,这就是为什么我的文章开头是关于等待 XHR 请求的原因。 -
恕我直言,你也可以使用 Firefox、Safari、IE 或无头 PhantomJS 浏览器
-
@salomonderossi 查看我的编辑,我已经在 Firefox 和 Phantom 上尝试过,但它不起作用。 firefox 路由垃圾邮件加载了大量控制台错误,但没有一个是
Done一个,而 PhantomJS 一个由于设置了 2 个不同的 DesiredCapabilities 而无法正常工作。
标签: python python-2.7 selenium