我正在使用python + selenium来实现网络浏览器的自动化,并得到此错误。
DevTools listening on ws://127.0.0.1:57671/devtools/browser/8a586f7c-5f2c-4d10-8174-7a7bf50e49b5 [5096:1196:0909/183254.362:ERROR:mf_helpers.cc(14)] Error in dxva_video_decode_accelerator_win.cc on line 517
当程序到达代码的这一部分时,就会出现问题:
def send_comments(driver): add_comments = driver.find_elements_by_class_name('add') comments = driver.find_elements_by_xpath("//form[@class='addCommentexpand']//textarea[contains(@placeholder,'Add a comment')]") submit_comments = driver.find_elements_by_xpath("//button[text()='Comment']") i = 0 for add, comment, submit in zip(add_comments, comments, submit_comments): print("comment begins") add.click() print("+add comment clicked") comment.click() print("comment textbox clicked") comment.send_comments("Amazing Art") print("text typed") submit.click() print("comment submited") i += 1 if i > 5: driver.close() send_comments(driver)
它也没有登录控制台。谁能说出问题所在?
文档中的@AndreaCardaci在 单独的上下文 中 加载URL 时提到 在无头模式下 使用 Google Chrome时 :
普通的示例代码每次都在单独的上下文中的新的一次性标签中运行(将其视为隐身配置文件)。
为了从Chrome 62开始获取浏览器版本,浏览器目标URL是在运行时生成的,可以通过 /json/version 端点获取, /devtools/browser 如果没有的话,可以回退到目标URL 。
/json/version
/devtools/browser
以下是相关代码:
const CDP = require('chrome-remote-interface'); async function doInNewContext(action) { // fetch the browser version (since Chrome 62 the browser target URL is // generated at runtime and can be obtained via the '/json/version' // endpoint, fallback to '/devtools/browser' if not present) const {webSocketDebuggerUrl} = await CDP.Version(); // connect to the DevTools special target const browser = await CDP({ target: webSocketDebuggerUrl || 'ws://localhost:9222/devtools/browser' }); // create a new context const {Target} = browser; const {browserContextId} = await Target.createBrowserContext(); const {targetId} = await Target.createTarget({ url: 'about:blank', browserContextId }); // connct to the new context const client = await CDP({target: targetId}); // perform user actions on it try { await action(client); } finally { // cleanup await Target.closeTarget({targetId}); await browser.close(); } } // this basically is the usual example async function example(client) { // extract domains const {Network, Page} = client; // setup handlers Network.requestWillBeSent((params) => { console.log(params.request.url); }); // enable events then start! await Promise.all([Network.enable(), Page.enable()]); await Page.navigate({url: 'https://github.com'}); await Page.loadEventFired(); } doInNewContext(example);
此外,按照获取浏览器目标URL(ws:// localhost:9222 / devtools / browser / …)的方式,可以http://127.0.0.1:9222/json/version在 webSocketDebuggerUrl 字段中通过端点访问。所以,或者,如果您正在使用的选项启动铬--remote-debugging- port=0,无论 端口 和 端点 被写入 DevToolsAcivePort 在浏览器配置文件夹文件。
http://127.0.0.1:9222/json/version
webSocketDebuggerUrl
--remote-debugging- port=0
该错误不会影响您@Test,您可以暂时忽略该错误。
@Test