我使用以下测试设置(最新含义截至2012年7月14日):
Core i7配备ATI FirePro V9800(Eyefinity)
Windows 7 Pro 64位(最新更新/补丁)
最新的Catalyst驱动程序
最新的谷歌Chrome稳定版/金丝雀版.
6 x 1080p显示器(连续)显示11520px×1080px桌面.
我尝试了以下方法来获取跨显示的全屏Web视图:
在Catalyst控制面板中将最大化设置为整个桌面设置.这适用于最大化普通窗口(Chrome除外),但不适用于任何全屏幕.
尝试Chrome Kiosk模式(这将是理想的),同样的问题,只填充主显示器.
使用Chrome全屏或HTML5全屏API会产生相同的结果:全屏显示6台显示器中的一台.
IE9似乎对webview有约10000px的限制,因此我甚至无法在整个桌面上手动拉伸它(适用于Chrome).
试过UltraMon.
尝试了一些Chrome命令行开关(http://peter.sh/experiments/chromium-command-line-switches/)用于自助服务终端模式,从全屏等开始,所以现在使用--app ="http: //127.0.0.1/index.html"切换到至少摆脱Chrome的大部分UI元素.
试图找到Chrome的扩展程序,但没有成功.
在IE9中尝试使用Chrome Frame,也只使用一个显示器.
据我所知,这很可能是一个向Chrome报告错误桌面大小的驱动程序问题(我认为这是Catalyst Maximize到完整桌面大小功能的重点).Chrome似乎没有像其他"正常"窗口那样从同一个地方获得桌面大小(显然不太熟悉Windows窗口).
我想在多个显示器上工作全屏Chrome浏览器webview,或者我可以手动最大化的完全无铬窗口.我的浏览器配置很灵活,即使操作系统也有些灵活.
我想知道:
有没有人在超过1台显示器上获得全屏浏览器视图才能使用Chrome(或任何浏览器)?
是否有任何工具可以伪造Chrome的正确(完整)显示尺寸?
这可以在Windows 8中使用吗?
是否只显示运行最新Chrome的Chromeless Chrome浏览器?(我见过awesomium,但发现它的价格对我想要的东西来说太高了).此外,我希望能够理想地使用最新的Chrome版本.
任何评论都欢迎并且对于冗长的细节感到抱歉.
谢谢阅读!-Tobi
我正面对一个由ul和li元素组成的下拉菜单:
<ul class="o_dropdown_theme_values">
<li class="" tabindex="-1">
<label class="myclass" tabindex="0">Category 1</label>
</li>
<li class="" tabindex="-1">
<label class="myclass" tabindex="0">Category 2</label>
</li>
...
</ul>
Run Code Online (Sandbox Code Playgroud)
我知道使用Chromeless修改下拉菜单的两种方法:
.evaluate((dropDownValue) => {
select = document.querySelector('select#category1')
select.value = dropDownValue
}, dropDownValue)
Run Code Online (Sandbox Code Playgroud)
和
.click('#id')
.type("first letters of option", '#id')
.click('#id option[value="'+dropDownValue+'"]')
Run Code Online (Sandbox Code Playgroud)
但由于ul和li菜单的结构,我无法使用这些.
我还尝试单击菜单,然后根据需要多次按Tab键选择正确的选项,就像我用键盘导航菜单一样.但是我发送的Tab键不会被考虑在内.我能够向菜单发送一个(并且只有一个)DOWN键(而不是TAB),但仅此而已.
我怎么能操纵这种菜单?任何基于JavaScript的解决方法将不胜感激.
我的Flex/AS3应用程序中有一个Youtube API无边框播放器.一切正常,直到上个月我们开始在页面重新加载时遇到放大问题.
以下是播放YouTube视频的应用程序的正常状态示例:
重新加载网页后:
这仅在某些广告上发生,一旦发生,它将很容易反复出现,直到此广告被其他内容更改为止.我不确定广告导致问题的原因并不是100%确定它是导致问题的广告,但几乎99%就是它.
有人经历过同样的问题吗?或者,如何在不收到沙盒违规例外的情况下强制执行Google广告不会影响主应用程序?
不幸的是,提供应用程序的源代码非常复杂,但是YoutTube播放器的实现完全根据谷歌的例子,并且已经在生产很长时间了.
我的Flex/AS3应用程序中有一个Youtube API无边框播放器.有时我需要播放器连续播放Youtube的电影(不间断).
在播放12小时或更长时间之后,由第一个播放器初始化请求生成的API令牌将过期.
http://www.youtube.com/apiplayer?version=3&modestbranding=1&autoplay=0
Run Code Online (Sandbox Code Playgroud)
这里的问题是,在令牌过期后再次调用的API调用loadVideoById无法开始播放视频,因为令牌没有自动续订.
在播放我们的播放列表(每个项目通过调用loadVideoById播放)播放 4-5小时或更长时间后,视频有时会开始播放并突然卡住.虽然没有调度错误事件.
因此,对于第一个问题,解决方案是通过卸载播放器并使用API调用再次加载它来每12小时更新一次令牌:
http://www.youtube.com/apiplayer?version=3&modestbranding=1&autoplay=0
Run Code Online (Sandbox Code Playgroud)对于第二个问题,没有任何想法.需要你的帮助.
private function CreateYoutubePlayerSWF():void {
...
theYoutubeLoader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);
theYoutubeLoader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3&modestbranding=1&autoplay=0"));
...
}
private function PlayPendingVideo():void {
...
theYoutubePlayer.loadVideoById(videoWaitingToPlayInfo.videoWaitingToPlay);
...
}
Run Code Online (Sandbox Code Playgroud)
当玩家停止玩时,这就是我在小提琴手中得到的:
"request": {
"method": "GET",
"url": "http://www.youtube.com/get_video?cpn=Lj5HaLu7MzS5kG-T&fmt=35&splay=1&t=vjVQa1PpcFNwMVrYUDFOTTG-7co1uJFo3oyrB-qoP_k=&video_id=j-vJJSqw5Q4&eurl=http%3A%2F%2Fwatchitoo.com%2Fiframe.php%3Fid%3Dwwa-154%26scale%3Dfalse%26layout%3D14&asv=3&el=embedded&ps=chromeless&ptk=youtube_none&noflv=1",
...
"queryString": [
{
"name": "cpn",
"value": "Lj5HaLu7MzS5kG-T"
},
{
"name": "fmt",
"value": "35"
},
{
"name": "splay",
"value": "1"
},
{
"name": "t",
"value": "vjVQa1PpcFNwMVrYUDFOTTG-7co1uJFo3oyrB-qoP_k"
},
{
"name": "video_id",
"value": "j-vJJSqw5Q4"
},
{ …
Run Code Online (Sandbox Code Playgroud) 我使用Chromeless检索网站上的一条信息并加载相应的文件:
async function run() {
const chromeless = new Chromeless()
const screenshot = await chromeless
.goto('http://www.website.com')
title = await chromeless.inputValue('input[name="title"]')
var fs = require('fs');
var data = fs.readFileSync(title,"utf8");
...
await chromeless.end()
}
Run Code Online (Sandbox Code Playgroud)
但是当我启动脚本时,文件读取指令会立即执行,而不是等待Web爬行完成.
在javascript中,我认为我需要使用回调函数来防止这种情况,但有没有更好的方法来使用Chromeless?
我正在尝试使用CentOS 6在我的服务器上安装节点js包:
npm install chromeless
Run Code Online (Sandbox Code Playgroud)
但安装失败并显示以下消息:
/usr/lib/node_modules/npm/bin/npm-cli.js:79
let notifier = require('update-notifier')({pkg})
^^^^^^^^
SyntaxError: Unexpected identifier
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:945:3
Run Code Online (Sandbox Code Playgroud)
知道发生了什么事吗?
如何安装所有语言的字体?这就是我所做的,但 Chrome 中没有日文字体。
来自这张图片:https : //github.com/Zenika/alpine-chrome/blob/master/Dockerfile
FROM zenika/alpine-chrome
USER root
RUN apk add --no-cache msttcorefonts-installer fontconfig
RUN update-ms-fonts
# Installs latest Chromium package.
RUN apk add --no-cache \
msttcorefonts-installer fontconfig \
font-noto \
font-noto-adlam \
font-noto-adlamunjoined \
font-noto-arabic \
font-noto-armenian \
font-noto-avestan \
font-noto-bamum \
font-noto-bengali \
font-noto-buhid \
font-noto-carian \
font-noto-chakma \
font-noto-cherokee \
font-noto-cypriot \
font-noto-deseret \
font-noto-devanagari \
font-noto-ethiopic \
font-noto-extra \
font-noto-georgian \
font-noto-glagolitic \
font-noto-gothic \
font-noto-gujarati \
font-noto-gurmukhi \
font-noto-hebrew \
font-noto-kannada \ …
Run Code Online (Sandbox Code Playgroud) 我们正在寻求将Selenium方法替代为自动Web数据收集方法,因此建议使用Puppeteer或Chromeless。
我喜欢的一件事是能够在AWS lambda上运行的chrome变得毫无头绪。该原因被认为是与Chromeless或Puppeteer一起使用的主要原因。但是,我在网上看到一些帖子,表明使用Selenium可以完成相同的操作。如果是这样,那么与Selenium相比,Chromeless和Puppeteer具有什么优势?
我们将使用NodeJS
我想使用特定的 css 路径获取 DOM 中的所有元素:
var elements = await chromeless.evaluate(() => document.querySelectorAll('div a'))
console.log(elements[0].innerHTML)
console.log(elements[1].innerHTML)
Run Code Online (Sandbox Code Playgroud)
但这段代码在第一行给了我错误“对象引用链太长”
这段代码可以工作:
var element = await chromeless.evaluate(() => document.querySelectorAll('div a')[0].innerHTML)
console.log(element)
Run Code Online (Sandbox Code Playgroud)
我可能会使用一个循环来检索它们,但我不知道我的 DOM 中有多少元素有这个 css,所以我不知道要循环多少次。
获取所有所需元素的正确语法是什么?
从YouTube播放器http://code.google.com/apis/ajax/playground/?exp=youtube#chromeless_player我得到一个时间值,以秒为单位,如'243.577'.让它成为一个简单的字符串.
如何将其转换为如下值:'04:35'?对于这个例子,像4分35秒(希望我做出正确的计算).
如果该值仅为5秒,那么它应该给出类似'00:05'的值.如果是负数,那么'00:00'.
这个问题与这个问题完全相同:How to get MAC address of your machine using a C program?
“我正在 Ubuntu 上工作。我如何使用 C 程序获取我的机器的 MAC 地址或接口(如 eth0)。”
现在,我通常不接触 C...但在这种情况下我必须这样做。由于我真的不知道以下代码(取自上面链接的答案)中发生了什么,因此我需要一些帮助。
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <linux/if.h>
#include <netdb.h>
#include <stdio.h>
int main()
{
struct ifreq s;
int fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
strcpy(s.ifr_name, "eth0");
if (0 == ioctl(fd, SIOCGIFHWADDR, &s)) {
int i;
for (i = 0; i < 6; ++i)
printf(" %02x", (unsigned char) s.ifr_addr.sa_data[i]);
puts("\n");
return 0;
}
return 1;
}
Run Code Online (Sandbox Code Playgroud)
我需要一个将 MAC 地址作为字符串返回的函数,而不是打印 MAC …
chromeless ×11
javascript ×3
youtube ×3
alpine-linux ×1
apache-flex ×1
automation ×1
c ×1
callback ×1
centos ×1
css ×1
docker ×1
flash ×1
fullscreen ×1
html ×1
jquery ×1
jsctypes ×1
kiosk ×1
linux ×1
node.js ×1
npm ×1
puppeteer ×1
selenium ×1
token ×1
youtube-api ×1