Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
等待Python中Selenium的XHR请求和/或控制台消息_Python_Python 2.7_Selenium - Fatal编程技术网

等待Python中Selenium的XHR请求和/或控制台消息

等待Python中Selenium的XHR请求和/或控制台消息,python,python-2.7,selenium,Python,Python 2.7,Selenium,我试图让selenium在完全渲染后捕获页面源代码,如果我直接转到页面并捕获页面渲染后的一小部分,如果我将其完全渲染30秒,但我希望它更高效 如果我们用它作为一个例子,你会看到在页面加载5秒后会有一个toast_poll和一个timeline XHR请求 我希望能够检测到这些请求中的一个,并等待一个请求触发,然后这就是页面已完全加载的指示器 我使用的站点会触发console.log(“Done”),因此,如果我能够在PhantomJS和Firefox中检测到控制台命令,那么这将是比等待XHR请求

我试图让selenium在完全渲染后捕获页面源代码,如果我直接转到页面并捕获页面渲染后的一小部分,如果我将其完全渲染30秒,但我希望它更高效

如果我们用它作为一个例子,你会看到在页面加载5秒后会有一个toast_poll和一个timeline XHR请求

我希望能够检测到这些请求中的一个,并等待一个请求触发,然后这就是页面已完全加载的指示器

我使用的站点会触发
console.log(“Done”)
,因此,如果我能够在PhantomJS和Firefox中检测到控制台命令,那么这将是比等待XHR请求更好的选择,只需等待控制台中出现
Done
,然后这就是页面已完全加载的指示器

关于此帖子的重复标记:

这个问题是关于PhantomJS和Firefox的,这篇文章是一年前写的,给出的答案只在Chrome上有效,我正在寻找一个
PhantomJS
Firefox
选项,我已经认为基于StackOverflow是不可能的,所以我的文章的开头是关于等待XHR请求

我已经尝试了以下代码,但它对我不起作用。。即使网站抛出一个console.log(“完成”),我也没有收到任何响应


我无法使用
browser=webdriver进行测试。Firefox()
已被注释掉,因为我不确定如何设置两组
所需的功能。

您可以覆盖
控制台.log
函数,并使用
执行异步脚本等待“完成”消息:

从selenium导入webdriver
driver=webdriver.Firefox()
驱动程序。设置脚本超时(10)
驱动程序。获取(“…”)
#等待调用console.log(“完成”)
驱动程序。执行异步脚本(“”)
var callback=参数[0];
console.log=函数(消息){
如果(消息==“完成”)
回调();
};
""")

可能与@salomonderossi-Nope重复这是关于
PhantomJS
Firefox
,这篇文章只关于Chrome,我正在寻找PhantomJS和Firefox选项,我已经认为基于StackOverflow是不可能的,所以这就是为什么我的帖子的开头是关于等待XHR请求的。你也可以使用Firefox、Safari、IE或无头幻影browser@salomonderossi请看我的编辑,我已经在Firefox和Phantom上试用过了,但它不起作用。firefox路由垃圾邮件加载控制台错误,但没有一个是
Done
错误,而PhantomJS错误只是因为设置了2种不同的期望功能而无法工作。
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