解决方案是使用可以与valuatescript或executescript一起执行的Javascript。
$this->getSession()->evaluatescript($script);
$ script变量是一个字符串,可以包含如下脚本:
var c = document.querySelector("canvas");var ctx = c.getContext("2d");ctx.moveTo(20,20);ctx.lineTo(50,50);ctx.stroke();如果需要,您可以使用变量来更改绘制的值。
在浏览器中进行了测试,以使其正常工作,您需要确保切换到包含画布的iframe(如果有)。
请使用相同的脚本查看下面的步骤,但是稍稍更改一下以编写文本:
public function signatureTest(){ $script = 'var c = document.querySelector("canvas"); var ctx = c.getContext("2d"); ctx.fillStyle = "black"; ctx.font = "20px Georgia"; ctx.fillText("automation user",10,90);'; $this->getSession()->executescript($script); }确保使用的选择器将选择画布元素类型。
第二个版本,尝试mousedown事件触发器。
public function signatureTest(){ $function = <<<JS (function(){ var c = document.querySelector("canvas"); event = document.createEvent('MouseEvent'); event.initEvent('mousedown', true, true); var ctx = c.getContext("2d"); ctx.fillStyle = "black"; ctx.font = "20px Georgia"; ctx.fillText("automation user",10,90); c.dispatchEvent(event); })()JS; $this->getSession()->executescript($function); }


