我目前正在无头模式下使用PDE构建来构建我的OSGI Bundle项目.PDE Antrunner任务使用Eclipse安装,我只是指向我的本地Eclipse安装.
不幸的是,我的eclipse安装大约260MB,但我认为PDE版本不需要在标准的eclipse安装中使用所有这些插件.
现在有人做了无头PDE构建所需的最小插件列表吗?我在自定义目标平台文件夹中实际拥有的所有依赖项,所以我想我在eclipse安装中唯一需要的是PDE构建实际需要的依赖项.但是那些是什么?我可以将安装缩小到最低限度吗?
我的目标是在我的项目的SVN中签入这个"build-eclipse"文件夹,这样当你检查它时,你就拥有了启动完整构建所需的一切,而不需要触及任何build.properties.但是如果我可能只需要20MB的话,我不想提供266MB的日食.
谢谢Christoph
我最近在Red Hat Server上安装了Python 2.7,Robot Framework和Selenium Library(我仍然不知道我是否成功...),以便在Web应用程序上运行一些测试.
所以我尝试了一个使用Robot Framework的简单测试用例来查看Selenium Library是否正常运行,只是打开一个网页,仅此而已......
Selenium Server根据ps的结果启动并运行,Firefox二进制文件在PATH中...
从Robot Framework运行测试用例(使用pybot testcasename.tsv)我得到一个例外:
错误:将屏幕截图捕获到字符串时出现问题:java.awt.AWTException:无头环境
那么,无头环境是什么?有没有人知道是否还有其他东西需要安装或配置?
我使用Selenium开发了一些Python脚本,最初是PhantomJS.在转向自动下载的同时,我切换到(朝向)Firefox(已经工作),然后使用无头选项切换Chrome,因此我不会在我面前打开浏览器.
我的第一个脚本访问一个页面和几个HTML元素,与无头Chrome完美配合.
然而,第二个只适用于Chrome.如果我添加"无头"选项,它将不再起作用.当我尝试在无头模式下打印HTML以查看为什么它找不到我正在寻找的HTML元素时,我只有:
<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body></body></html>
Run Code Online (Sandbox Code Playgroud)
使用标题Chrome,我有一个完整的HTML打印.这就是我开始无头Chrome的方式:
options = webdriver.ChromeOptions()
options.add_argument("--ignore-certificate-errors")
options.add_argument("headless")
driver = webdriver.Chrome(chrome_options=options)
Run Code Online (Sandbox Code Playgroud)
再次注意,这适用于我的另一个脚本.这里唯一的区别是我需要登录才能访问该页面,但即便如此,为什么它会与头部一起工作?填写表单,我的脚本无论如何都会自动登录.
Python:3.6.1,Chrome:60.0.3112.78(64位),Selenium:3.4.3
任何的想法 ?谢谢.
编辑:这是代码的开头
url = 'https://10.11.227.21/tmui/'
driver.get(url + "login.jsp")
html_source = driver.page_source
print(html_source)
blocStatus = WebDriverWait(driver, TIMEOUT).until(EC.presence_of_element_located((By.ID, "username")))
inputElement = driver.find_element_by_id("username")
inputElement.send_keys('actualLogin')
inputElement = driver.find_element_by_id("passwd")
inputElement.send_keys('actualPassword')
inputElement.submit()
Run Code Online (Sandbox Code Playgroud) 我试图通过使用XDummy驱动程序在docker容器内运行X11服务器.但是,我在使用它时遇到了问题.预期目的是执行无头渲染.我可以使用Xvfb来使用它,但我需要RANDR支持,并且最终还需要GL支持.
Dockerfile:
FROM node:slim
RUN mkdir nodeapp \
&& apt-get update \
&& apt-get install -y xorg \
&& apt-get install -y xserver-xorg-video-dummy x11-apps
COPY App /nodeapp/
ENV DISPLAY :1
RUN cd nodeapp/ \
&& npm install \
&& Xorg -noreset +extension GLX +extension RANDR +extension RENDER -logfile /nodeapp/xdummy.log -config /nodeapp/xorg.conf start :1 &
ENTRYPOINT [ "node", "/nodeapp/index.js" ]
Run Code Online (Sandbox Code Playgroud)
xorg.conf文件是基本的Xdummy xorg.conf
但是,xserver没有启动,并且日志文件没有提供任何有用的东西,但我确信在Dockerfile中设置Xorg时我做错了什么,但我找不到任何类似的例子.
建议的程序是什么?
我希望使用chrome无头浏览器复制"另存为"功能,以保存包含所有资源的完整网页.有没有办法做到这一点?我尝试了--print-to-pdf和--screenshot选项,并期待探索"另存为"选项.
google-chrome headless headless-browser google-chrome-headless
我需要一种系统级方法java.awt.headless来true 为所有java调用设置属性.也就是说,使用-Djava.awt.headless=true不是一个选项,因为java是从我无法访问的地方调用的(例如来自用Java/C /等编写的另一个工具).
我正在使用一堆用Java编写的工具(特别是Adobe的Air ADT),这些工具依赖于AWT类.当我在控制台上运行这些工具时,它们工作正常.但是,当我从SSH会话中运行它们时,它们会失败java.lang.InternalError: Can't connect to window server - not enough permissions.谷歌搜索我发现将java.awt.headless设置为true将解决问题.它没有,这是因为ADT本身不会 产生儿童Java进程-Djava.awt.headless=true.
是否有任何系统级方法来确保在调用Java时设置此属性?也许一些系统awt属性文件或等价物?
最糟糕的情况我可以尝试替换/usr/bin/java添加此参数的shell脚本,"$@"但我希望避免这种情况.(更新:为了确保我的理论是正确的,尝试这个shell脚本破解它确实解决了问题.只是希望有一个更清洁的解决方案)
我是javascript和puppeteer的新手.我尝试了下面的登录代码并失败了.相比之下,我添加了pages2并成功了.我怎么解决呢?提前致谢.
const CREDS = require('./creds');
async function main() {
const puppeteer = require('puppeteer');
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.setViewport({width: 1200, height: 720})
await page.goto('https://www.daum.net');
await page.waitForNavigation();
await page.type('#id', CREDS.username);
await page.type('#loginPw', CREDS.password);
await page.click('#loginSubmit');
const page2 = await browser.newPage();
await page2.setViewport({width: 1200, height: 720})
await page2.goto('https://google.com');
await page2.type('#lst-ib', 'Headless Chrome');
}
main();
Run Code Online (Sandbox Code Playgroud) 我尝试访问的网站有 ssl证书错误
我正在使用这个版本的 puppeteer "puppeteer": "1.13.0"。
当我尝试时,仅在谷歌云await page.goto('http://bad_ssl_certificate_website')上出现超时错误。
超时错误:超出导航超时:
然而,它在 MAC本地运行得非常好。
我认为问题出在我的网站的 ssl-certificate-errors 上,因为如果我尝试使用“google.com”,它在两种环境中都可以正常工作。我使用https://www.sslshopper.com来检查 ssl 证书,它提到了这一点。
并非所有 Web 浏览器都信任该证书。您可能需要安装中间/链证书以将其链接到受信任的根证书。了解有关此错误的更多信息。您可以按照适用于您的服务器平台的 DigiCert 证书安装说明来修复此问题。请注意有关中级证书的部分。
当我使用旧版本的puppeteer时,我在本地也遇到了问题。我看到了完全相同的错误
“超时错误:超出导航超时:”
更新到最新版本的 puppeteer 修复了仅在本地运行 puppeteer 的问题,但尚未修复在google cloud上运行的 puppeteer
这就是我安排木偶师吃午饭的方式。
const browser = await puppeteer.launch({
headless: true,
ignoreHTTPSErrors: true,
args: [
"--proxy-server='direct://'",
'--proxy-bypass-list=*',
'--disable-gpu',
'--disable-dev-shm-usage',
'--disable-setuid-sandbox',
'--no-first-run',
'--no-sandbox',
'--no-zygote',
'--single-process',
'--ignore-certificate-errors',
'--ignore-certificate-errors-spki-list',
'--enable-features=NetworkService'
]
});
Run Code Online (Sandbox Code Playgroud)
我发现了一些相关问题: https://bugs.chromium.org/p/chromium/issues/detail ?id=877075
headless ssl-certificate chromium google-cloud-functions puppeteer
我有一个 GUI 应用程序,我想通过 GitHub Actions 设置测试。我已经进行了设置,以便 GitHub Actions 在 Ubuntu 上编译应用程序,但现在我想做的是运行应用程序几秒钟并测试它是否崩溃。但目前无法启动,因为没有安装X11服务器。
有没有办法可以安装虚拟 X11 服务器,以便应用程序运行?我不关心实际显示的内容,我只是希望应用程序能够打开,而不会因缺少 X11 服务器而失败。
或者,有没有办法安装虚拟 Wayland 服务器?该应用程序也可以在 Wayland 上运行。
x11 user-interface continuous-integration headless github-actions
headless ×10
puppeteer ×2
selenium ×2
air ×1
chromium ×1
docker ×1
eclipse ×1
eclipse-pde ×1
environment ×1
exception ×1
headless-ui ×1
java ×1
javascript ×1
python ×1
tailwind-css ×1
tailwind-ui ×1
x11 ×1
xorg ×1
xserver ×1