Flash PhantomJs点击一个闪光按钮
我正在尝试使用分叉的Flash PhantomJs点击一个闪光按钮,flash,phantomjs,casperjs,javascript,Flash,Phantomjs,Casperjs,Javascript,我正在尝试使用分叉的1.10.0版本和1.0.2 我的环境就是这样,船上有一个 flash支持运行得很好,但模拟点击却不行。 在下面的展示中,我从中取出一个flash按钮,并将其放入一个文件夹中 收到点击事件后,按钮标签从“点击我”更改为“哎哟” 因此,以下代码的预期结果将是: 但是,结果是 CasperJS代码: var casper = require('casper').create({ pageSettings: { loadPlugins: true } });
1.10.0
版本和1.0.2
我的环境就是这样,船上有一个 flash支持运行得很好,但模拟点击却不行。
在下面的展示中,我从中取出一个flash按钮,并将其放入一个文件夹中 收到点击事件后,按钮标签从“点击我”更改为“哎哟” 因此,以下代码的预期结果将是: 但是,结果是 CasperJS代码:
var casper = require('casper').create({
pageSettings: {
loadPlugins: true
}
});
casper.start("http://fiddle.jshell.net/Da3q7/show/light/");
casper.wait(1000);
// CasperJS click
casper.then(function () {
this.echo("Click", "INFO");
this.click('#section04example1');
});
casper.wait(1000);
casper.then(function () {
this.echo("Screenshot", "INFO");
this.captureSelector('button-demo.png', '#section04example1');
this.exit();
});
casper.run();
CasperJS只调用javascript事件,出于安全原因,这些事件不会触发Flash鼠标事件。
然而,PhantomJS
sendEvent
方法调用真实的浏览器事件
下一个问题是,元素必须在当前视口中可见,这在大多数情况下都需要scolling
最后,我编写了一个小CasperJSclickRelative
扩展:
casper.clickRelative = function (selector, offset) {
"use strict";
var docSize = casper.evaluate(function () {
return {width: document.width, height: document.height};
});
var position = this.getElementBounds(selector);
if (position !== null) {
var left = position.left + (offset.left || 0);
var scrollX = this.page.viewportSize.width > docSize.width ? 0 :
Math.min(left, docSize.width - this.page.viewportSize.width);
var top = position.top + (offset.top || 0);
var scrollY = this.page.viewportSize.height > docSize.height ? 0 :
Math.min(top, docSize.height - this.page.viewportSize.height);
var scrollOrig = {left: this.page.scrollPosition.left, top: this.page.scrollPosition.top};
this.page.scrollPosition = {left: scrollX, top: scrollY};
this.wait(10);
this.then(function () {
this.page.sendEvent("click", left - scrollX, top - scrollY, 'left');
});
this.wait(10);
this.then(function () {
this.page.scrollPosition = scrollOrig;
});
}
};
现在,我的脚本可以单击按钮并生成以下flash按钮的屏幕截图:
var casper = require('casper').create({
pageSettings: {
loadPlugins: true
}
});
casper.start("http://www.adobe.com/devnet/flash/quickstart/button_component_as3.edu.html");
casper.wait(1000);
casper.then(function () {
this.echo("Click", "INFO");
// The button has a margin so we have to add a little offset to the
// click position:
this.clickRelative('#section04example1', {left: 30, top: 15});
});
casper.wait(1000);
casper.then(function () {
this.echo("Screenshot", "INFO");
this.captureSelector('button-demo.png', '#section04example1');
this.exit();
});
casper.run();