无头的铬合金不能像广告中那样工作
使用此页面作为参考: http://executeautomation.com/blog/running - 无头模式 - selenium-c/ 我试图使Chrome处于无头模式(以在Specflow/Xunit下运行).这已经失败了,我想知道是否有人有解决方案/修复. 我正在使用.NET 4.7控制台应用程序和Google Chrome版本65.0.3325.162(官方构建)(64位)(64位)... 这是我的packages.config:
6 2024-04-21
编程技术问答社区
在Microsoft Azure网络应用程序中运行无头的Chrome。
我目前正在使用phantomjs生成网页的屏幕截图. 由于包括Web字体和视频标签支持在内的各种问题,我想尝试切换到无头Chrome. 有人在Azure Web应用程序中成功运行无头铬吗? 我找不到.NET API,并且假设如果我想要类似于phantomjs的JavaScript API,我需要使用puppeteer运行node.js. 解决方案 现在,大多数大库是为nodejs制作的.没有它可以运行Chrome无头的Chrome,但是您需要一个用于.NET API的库才能与Chrome有效通信.如果不存在,则该协议本身会记录在如果您正在努力使Chrome在Azure上运行,我有一个提供Docker映像的服务,该服务可能像几个命令一样简单(位于在这里).除此之外,那里还有一些开源选项,但是它们有不同的问题和用途.
4 2024-03-26
编程技术问答社区
如何在Azure云服务或Azure函数中运行Headless Chrome?
我试图使用无头铬来从复杂的HTML文件(包含图像,SVG等)生成PDF文件.我能够在云服务(Windows)上使用wkhtmltopdf.exe来生成简单的PDF文件,但是我确实需要Chrome来生产与HTML + SVG + Image尽可能近的PDF. . 我希望能够在Azure Cloud Service或Azure功能中运行无头铬,但我无法正常工作.我想这是由于对GDI的限制.我能够在自己的机器上的Azure仿真器中运行代码和无头铬,但是一旦部署了它,就无法使用它. 以下是我当前在Azure函数(用于Windows)中运行的代码.我正在使用Puppeteer进行example.com的屏幕截图.如果我可以使它起作用,我想生成PDF会变得容易. const fs = require('fs'); const path = require('path'); const puppeteer = require('puppeteer'); const os = requi
在GitHub Actions中运行Selenium Webdriver进行单元测试
我正在尝试在部署我的 aws lambda 之前,在 github Action 中进行单元测试,我正在运行 selenium webdriver 功能正常硒 - 柠檬-lambda ).我在 python 3.6 中运行我的环境,并使用Chromedriver版本95.0.4638.54 我在运行单元测试时一直遇到此错误: selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally. (chrome not reachable) 我使用了与运行AWS lambda(有效的)时相同的镀铬选项: lambda_options = [ '--autoplay-policy=user-gesture-required', '--disable-background-networking',
如何将无头的chromium模块与AWS Lambda捆绑?
我正在尝试将puppeteer与lambda一起使用,但是,在无服务器部署上,由于超过了250MB捆绑的包装尺寸限制,lambda错误出现了. 因此,为了达到极限,我改用了没有包装铬包装的Puppeteer Core.这就需要引用可执行器以启动Chrome的路径. (例如puppeteer.launch({executablePath: headlessChromiumPath})); 但是,我不确定如何将无头铬加载到我的容器中,以便以后可以引用它. 解决这个问题,我正在尝试几件事: 首先,我已经下载了一个无头铬,然后将其包含在我的API中. 文件结构: -run-puppeteer.js -headless_shell.tar.gz 引用如: const browser = await puppeteer.launch({ executablePath: "../headless_shell.tar.gz" });
TestCafe错误无法打开" Chrome:headless"浏览器
我在与TestCafe的集成测试阶段进行端到端测试的Maven项目 我在AWS Codepipeline上ERROR Unable to open the "chrome:headless" browser在此之前,没有任何更改,它成功地运行了. testcafe的命令:testcafe chrome:headless 在Maven项目中运行NPM命令,我使用com.github.eirslett:frontend-maven-plugin:1.15.0插件,这是我的管道上集成测试阶段的一部分. [INFO] > shop-e2e@1.0.0 test-shop-chrome [INFO] > testcafe chrome:headless [INFO] [INFO] Using CONFIG: {"baseUrl":"http://localhost:18888"} [INFO] ERROR Unable to open the "chrome:headle
22 2024-03-22
编程技术问答社区
Puppeteer无法在AWS Codebuild上运行Chrome
我正在使用业力使用Chromeheadless测试Angular4项目,并且在本地效果很好.然后,我尝试在AWS CodeBuild上运行此操作.最初的问题是CodeBuild VM不包括Chrome headless,因此我包含了Puppeteer NPM软件包,并在Karma Conf中相应地设置了Env var.这仍然可以在本地工作正常,但是在AWS CodeBuild上,我会发现错误... puppeteer/.local-chromium/linux-526987/chrome-linux/chrome: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory 构建是从执行maven mvn -B package的标准buildspec.yml触发的. Angular构建/测试是使用Eislett/Fron
16 2024-03-22
编程技术问答社区
如何用节点Puppeteer设置选择的值
我正在尝试使用相当新的GoogleChrome/Puppeteer库进行一些自动化,但是我不知道如何在选择字段中设置值. 这是我(简化的)函数,以设置文本输入的值: async function setInputVal(sel, text) { await page.focus(sel) page.press('Backspace') page.type(text) } await setInputVal('input.searchjob', task.id) 我无法弄清楚如何为选择字段做同样的事情. 我试图设置焦点,插入脚本并执行,但我无法正常工作. 解决方案 您可以使用 to select option: await page.select('select#example', 'carrot'); 其他解决方案 我自己找到了一个解决方案: async function setSelectVal(
14 2024-03-21
编程技术问答社区
当通过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
14 2024-03-21
编程技术问答社区
Puppeteer。如何处理多个标签?
方案:带有两个部分工作流程的开发人员应用程序注册的Web表单. 第1页:填写开发人员应用详细信息,然后单击按钮创建应用程序ID,然后在新选项卡中打开... 第2页:应用程序ID页面.我需要从此页面复制应用程序ID,然后关闭选项卡并返回第1页并填写应用程序ID(从第2页保存),然后提交表单. 我了解基本用法 - 如何打开第1页,然后单击打开第2页的按钮 - 但是,当它在新标签中打开时,我如何在第2页上获取句柄? 示例: const puppeteer = require('puppeteer'); (async() => { const browser = await puppeteer.launch({headless: false, executablePath: '/Applications/Google Chrome.app'}); const page = await browser.newPage(); // go to
10 2024-03-21
编程技术问答社区
无头的铬合金:铬合金无法到达
我正在使用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运行时,测试正常. 解决方案
14 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
16 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
10 2024-02-21
编程技术问答社区
Puppeteer:同一 Chromium 实例的多个用户请求
希望节省系统资源,我想通过Puppeteer中的同一铬版本运行用户请求. 如果用户在我的网站上提交了称为Puppeteer的表单,并且铬已经在运行,则如何将相同的铬实例使用到最多4个选项卡? ? 如果在铬实例中打开了超过4个选项卡,那么我想启动一个新的铬实例. 我该如何实现?我是否需要将Chromium实例的browserWSEndpoint存储到文件中,然后每次提交请求时检索它? (这将与puppeteer.connect()一起使用browserWSEndpoint). 如果我必须这样做,请说有2个铬浏览器活动.最新的第一个浏览器具有最大四个打开选项卡,因此我无法使用此浏览器.然后,我会检查下一个browserWSEndpoint,如果少于4个打开选项卡,请创建一个新页面;如果没有,请启动一个新的浏览器. 听起来还可以吗? 解决方案 您可以使用可以节省成本的lambda,如果要使用API​​网关,请确保避免LAMBDA的30秒超时. no
10 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作为数据.这可能表明保留或其他内容(如第二张图像所示) 获得确切的数据,我们在代码中放了一个断点
12 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
14 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
4 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
28 2023-12-01
编程技术问答社区