无头的铬合金:铬合金无法到达
我正在使用Chrome无头来运行量角测试.它运行了一段时间,但此后我会收到以下错误. [15:36:30] E/启动器 - Chrome无法到达(会话信息: 无头chrome = 59.0.3071.115)(驱动程序信息: Chromedriver = 2.30.477690 (C53F4AD87510EE97B5C3425A14C0E79780CDF262),平台= Mac OS X 10.11.6 x86_64)(警告:服务器没有提供任何stacktrace 信息)命令持续时间或超时:5毫秒构建信息: 版本:'3.4.0',修订:'未知',时间:'未知' 配置如下所示. capabilities: { 'browserName': 'chrome', 'chromeOptions': { 'args': ['headless', 'disable-gpu'] } 当我没有"无头" args运行时,测试正常. 解决方案
2 2024-02-24
编程技术问答社区
在Angular上运行karma测试时,"未发现[对象Object]"。
在为我的应用程序运行单元测试时,我正在与此奇怪的错误作斗争. zone.js:260 Uncaught [object Object] thrown Zone.runTask @ zone.js:260 ZoneTask.invoke @ zone.js:423 我不知道哪种测试失败,因为控制台仅丢弃该错误.在我的本地,测试在任何问题上都没有. 在此错误之前,我遭受了"脚本错误"错误,但我用Chromeheadless的 - 可介绍 - 网络安全标志解决了它.我不知道这是否与这个新错误有关. 我的位置en en遥控器均为linux. 解决方案 您可能在遥控器上安装了不同版本的模块,或不同版本的全局NPM软件包.任何不匹配的依赖性版本都可以在两台机器上产生不同的结果. 在这两台机器上清除NPM缓存: npm cache clean 在这两台机器上重新安装node_modules: rm -fr node_modules npm insta
0 2024-02-21
编程技术问答社区
karma配置禁用无头铬,只使用终端机
我正在尝试运行角单位测试.我想配置karma.config文件不打开无头铬.简而言之,我想仅在终端中看到输出. 我通过在 karma.config 中评论以下代码行进行了尝试. reporters: ['progress', 'kjhtml'], port: 9876, colors: true, logLevel: config.LOG_INFO, autoWatch: true, browsers: ['Chrome'], singleRun: false reporters: ['progress', 'kjhtml'], port: 9876, colors: true, logLevel: config.LOG_INFO, autoWatch: true, browsers: ['Chrome'], singleRun: false 运行测试不应打开无头chrome
0 2024-02-21
编程技术问答社区
Puppeteer:同一 Chromium 实例的多个用户请求
希望节省系统资源,我想通过Puppeteer中的同一铬版本运行用户请求. 如果用户在我的网站上提交了称为Puppeteer的表单,并且铬已经在运行,则如何将相同的铬实例使用到最多4个选项卡? ? 如果在铬实例中打开了超过4个选项卡,那么我想启动一个新的铬实例. 我该如何实现?我是否需要将Chromium实例的browserWSEndpoint存储到文件中,然后每次提交请求时检索它? (这将与puppeteer.connect()一起使用browserWSEndpoint). 如果我必须这样做,请说有2个铬浏览器活动.最新的第一个浏览器具有最大四个打开选项卡,因此我无法使用此浏览器.然后,我会检查下一个browserWSEndpoint,如果少于4个打开选项卡,请创建一个新页面;如果没有,请启动一个新的浏览器. 听起来还可以吗? 解决方案 您可以使用可以节省成本的lambda,如果要使用API​​网关,请确保避免LAMBDA的30秒超时. no
2 2024-01-26
编程技术问答社区
在无头的chrome中无法处理微软的登录认证弹出窗口[Selenium using java]
我正在自动化Web应用程序以在无头铬中运行. Chromedriver版本:-Chromedriver 74.0.3729.6 应用程序登录屏幕具有Windows弹出窗口,可以输入用户名和密码.我使用警报来处理普通Chrome中的弹出窗口 WebDriverWait wait = new WebDriverWait(driver, 18); wait.until(ExpectedConditions.alertIsPresent()); Alert alert = driver.switchTo().alert(); alert.sendKeys("username" + Keys.TAB + "password"); alert.accept(); 当将Chrome设置为无头时,Windows弹出窗口就不会显示.我只能在屏幕截图中看到空白屏幕. 另外,我尝试将Chromeoptions添加为 String path = "path to chromedriver
如何在Windows 10的Chrome 60中使用无头浏览器?
我一直在研究以下有关无头铬的文章: https://developers.google.com/web/web/updates/2017/04/无头chrome 我只是将Windows 10上的Chrome升级到版本60,但是当我从命令行中运行以下任何一个命令时,似乎都没有发生: chrome --headless --disable-gpu --dump-dom https://www.google.com/ chrome --headless --disable-gpu --print-to-pdf https://www.google.com/ 我正在从以下路径(Windows上的Chrome的默认安装路径)运行所有这些命令: C:\Program Files (x86)\Google\Chrome\Application\ 当我运行命令时,似乎可以处理一秒钟,但实际上我什么也没看到.我在做什么错? 谢谢. 编辑: 如Mark Rajcok
如何使用puppeteer来转储WebSocket数据
我想在此页面中获取WebSocket数据 https://upbit.com/exChange?code=crix.upbit.krw-btc ,其websocket URL是动态的,仅在第一次连接期间有效,第二次连接到它,它将不再发送数据. 所以我想知道也许无头铬可以帮助我监视Websocket数据. 有什么想法吗?谢谢! 解决方案 您实际上不需要对此做任何复杂的事情.虽然URL似乎是动态的,但也可以通过代码效果很好.它不起作用的原因是您需要了解后台发生的事情. 首先让我们看一下网络选项卡. cookie和原点对于连接可能很重要.所以我们记下了这些. 现在让我们查看套接字上的数据交换 如果您查看帧,则初始帧将接收o作为数据,这可能表示开放连接.然后,网站将一些数据发送到套接字,这可能与我们要查询的数据有关.当连接停止一段时间时,插座将接收h作为数据.这可能表明保留或其他内容(如第二张图像所示) 获得确切的数据,我们在代码中放了一个断点
4 2023-12-02
编程技术问答社区
Node JS Puppteer的无限滚动循环
我正在学习Puppeteer,并试图刮擦已实现无限卷轴的网站.在延迟1秒后向下滚动,我可以从列表中获得所有价格. 这是URL 我想做的是,从列表中打开一个项目,获取产品名称,返回列表,选择第二个产品并为所有产品做此产品. const fs = require('fs'); const puppeteer = require('puppeteer'); function extractItems() { const extractedElements = document.querySelectorAll('.price'); const items = []; for (let element of extractedElements) { items.push(element.innerText); } return items; } async function scrapeInfiniteScrollItems( page, extr
4 2023-12-02
编程技术问答社区
浏览器开发工具中看到的页面元素没有被ChromeHeadless检索到
在此页面: https://www.bedbathandbeyond.com/store/product/o-o-o-o-olivia-olivia-oliver-turkish-turkish-modal-bath-towel-collection/5469128? 我可以看到一个带有"添加到购物车"文本的按钮,我还可以在开发工具中看到它. 但是,当使用Selenium的Chromeheadless检索相同的页面源,而我的脚本搜索它时,此文本不存在. 我尝试在浏览器中选择显示页面源,源也没有"添加到购物车文本" 此外,我使用卷发来获取页面,"添加到购物车"也不是在返回的页面源中. 我在做什么错? 页面隐藏按钮? 我该如何检查其存在,是否有产品可用性检查? 解决方案 您要查找的元素在阴影DOM内部.您需要先访问阴影根.很难确切地看到DOM中发生的事情,而没有进行任何反复试验,但是类似的事情: WebElement shadowHo
0 2023-12-01
编程技术问答社区
Puppeteer: 如何使用chrome无头浏览器api下载文件?
使用PuppeTeer,如何获得无头的Chrome浏览器下载文件(或提出其他HTTP请求并保存响应)? 解决方案 您可以使用此代码 const axios = require('axios'); const fs = require('fs'); const response = await axios({ method: 'GET', url: href, responseType: 'stream', }) const writer = fs.createWriteStream(path.resolve(`${__appRootDir}/public/${fileName}`)) response.data.pipe(writer) writer.on('finish', async () => { try { console.log('File downloaded'); await browser.close() } catch
6 2023-12-01
编程技术问答社区
如何使用puppeteer下载页面上的图片?
我是新来的网络刮擦,想使用Puppeteer在网页上下载所有图像: const puppeteer = require('puppeteer'); let scrape = async () => { // Actual Scraping goes Here... const browser = await puppeteer.launch({headless: false}); const page = await browser.newPage(); await page.goto('https://memeculture69.tumblr.com/'); // Right click and save images }; scrape().then((value) => { console.log(value); // Success! }); 我已经看了看 api‌文档但是无法弄清楚如何实现这一目标.感谢您的帮助. 解决方
6 2023-12-01
编程技术问答社区
Puppeteer-协议错误(Page.navigate)。目标已关闭
您可以在下面的示例代码中看到,我正在使用带有节点中的一组工人的Puppeteer来运行给定URL的屏幕截图的多个请求: const cluster = require('cluster'); const express = require('express'); const bodyParser = require('body-parser'); const puppeteer = require('puppeteer'); async function getScreenshot(domain) { let screenshot; const browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage'] }); const page = await browser.newPage();
2 2023-12-01
编程技术问答社区
使用Puppeteer在一个循环中抓取多个URLs
我有一系列URL来刮下以下网址: urls = ['url','url','url'...] 这是我在做的: urls.map(async (url)=>{ await page.goto(url); await page.waitForNavigation({ waitUntil: 'networkidle' }); }) 这似乎不等待页面加载,并且很快就访问了所有URL(我什至尝试使用page.waitFor). 我想知道我是在从根本上做错事还是不建议/支持这种功能. 解决方案 map,forEach,reduce等,在它们进入迭代器的下一个元素之前,它们都不会等待它们内部的异步操作. 执行异步操作时,有多种方法可以同步遍历迭代器的每个项目,但是在这种情况下,最简单的方法是简单地使用普通for运算符,它确实等待操作完成操作. const urls = [...] for (let i = 0; i
4 2023-12-01
编程技术问答社区
如何在selenium-docker项目中启用Headless Chrome >= 96中的WebGL,以便在没有XVFB的情况下在docker容器中运行Chrome。
我正在使用Selenium-Docker Project在Docker容器中运行Chrome,没有XVFB( START_XVFB=false ). 我想使用WebGL支持.使用Chrome V95和Lower(但是,当使用Chrome V96或更高版本时,它不起作用(seluser@6e0bab2896f2:/$ ps aux|grep chrome seluser 136 0.0 0.0 16875056 16500 ? Sl 22:36 0:00 /opt/selenium/chromedriver-97.0.4692.71 --port=48167 seluser 153 0.7 0.0 17181620 99736 ? Sl 22:36 0:00 /opt/google/chrome/chrome --no-sandbox --allow-pre-commit-input --disable-background-networking --disable-client-s
10 2023-11-30
编程技术问答社区
使用Selenium在无头的Chrome中实现全屏显示
我在E2E套件中有许多测试,其中视频元素已完整屏幕,并验证了全屏状态.但是,当无头运行套件时,这些测试失败了.页面的屏幕截图显示,即使在单击了全屏按钮之后,视频根本不在全屏上.有没有办法在无头铬中实现全屏功能? 这是我的配置中功能的示例. capabilities: [ { 'browserName': 'chrome', 'goog:chromeOptions': { args: ['headless'] } } ] 解决方案 当添加参数--start-fullscreen以初始化1366 x 724px 快照: 而 --start-maximized --kiosk --start-fullscreen 最终的屏幕尺寸始终是: 800 x 600px 快照: 结论 因此可以得出结论,在 --headless 模式下,chrome浏览器始
如何使无头浏览器可见 Python
我通过设置此参数创建了一个无头Webdriver Chrome浏览器: chrome_options.add_argument("--headless") 然后使用以下方式打开浏览器: driver = webdriver.Chrome(executable_path=os.path.abspath("chromedriver"), chrome_options=chrome_options) 满足条件后,是否可以使浏览器出现?我尝试使用以下方式再次删除属性: chrome_options.arguments.remove("--headless") 但这无能为力. 解决方案 当您将-Headless参数传递给Chrome时,它实际上是将实例创建为无头,而不是创建窗口并隐藏它,如果您想在符合条件时显示实例,则必须考虑不使用使用 - 镀铬参数的无头. 其他解决方案 您将无法在启动会话后从硒会话中删除选项/参数.每个Selenium会话都是使用
10 2023-11-30
编程技术问答社区
这个网站是如何用selenium和chromedriver检测远程控制的?
我正在尝试使用Selenium和Chromedriver从Discover网站筛选自己的信用卡信息.作为响应,它返回错误: 当前无法访问您的帐户. 过时的浏览器可以将您的计算机暴露于安全风险.要得到 在Discover.com上的最佳体验,您可能需要更新您的 浏览最新版本,然后重试. 有趣的是,如果我编写一个脚本以打开头浏览器并输入一些随机帐户和密码,则它正常工作.但是,如果脚本首先触摸网页,然后我输入,则会获取上述错误消息.有效的脚本是: import time from selenium import webdriver driver = webdriver.Chrome() driver.execute_script('window.location.href = "https://portal.discover.com/customersvcs/universalLogin/ac_main";') 如果我将这些行附加到脚本上并在睡眠结束后输入: 会
2 2023-11-30
编程技术问答社区
使用无头浏览器调试
我有一个WebDriver testsuite,当我在普通和无头浏览器中执行时,它的操作不同.当我在无头模式下执行它时,没有找到一个元素,但是当我使用相同的代码(在正常模式下相同的驱动程序)时找到. 我使用此标志设置无头模式: chromeOptions.addArguments("--headless"); 使用ChromeDriver 2.31和WebDriver 3.5.2.我该如何调试? 解决方案 有两种调试方法.您可以获取页面源并检查什么不同. 现在,当您使用Selenium启动浏览器时,它正在使用调试会话来自动化Chrome.因此,您无法使用此远程调试器进行远程调试器. 您需要手动启动Chrome. chrome --headless --remote-debugging-port=9222 --disable-gpu http://tarunlalwani.com 现在打开另一个镀铬,然后通过http://127.0.0.1:9222
6 2023-11-30
编程技术问答社区
当通过testcafe-browser-tools向Chrome二进制浏览器传递自定义参数时,可以无头运行testcafe。
在VM中运行testcafe,这主要是 工作. 但是,在启用硬件加速度的情况下,Chrome在此环境中无法正常启动,因此我必须从命令行flag --disable-gpu. 开始. 我正在利用" testcafe-browser-tools"软件包来完成此操作,通过通过Testcafe API中的Runner类覆盖默认浏览器命令. 这一切都可以在运行testcafe的情况下使用它打开一个浏览器窗口,但是我无法弄清楚如何在无头模式下使用相同的设置来运行测试.在修改浏览器命令时,我尝试简单地添加--headless arg,但它只是悬挂,测试永远不会启动. testcafe cli命令具有用于无头模式的开关,例如testcafe "chrome:headless" test.js,并挖掘似乎设置了一些内部配置变量的代码,但是我一直无法弄清楚如何获得通过API自定义浏览器命令时相同的行为. 供参考,这是我写的脚本来处理开始测试: const format
6 2023-11-12
编程技术问答社区
Unix中的Chrome Headless返回空的页面源代码
正在使用Chrome headless在Unix Machine(Cent OS)中运行我的Selenium Test脚本. 但是在Unix机器中,它返回空页源,例如空HTML标签. 尽管正在使用最新的Chromedriver 2.33和Google Chrome版本62.0 .. System.setProperty("webdriver.chrome.driver", "/../chromedriver.exe"); --chromedriver.exe for windows local machine -- chromedriver for unix machine ChromeOptions options = new ChromeOptions(); options.addArguments("--headless"); options.addArguments("
4 2023-11-08
编程技术问答社区