我已经对此做了一些阅读,但未能找到具体的东西。我有一个需要与Selenium交互的画布对象。但是我们都知道画布对象就像一个封闭的盒子。我读到你可以在JS代码中添加'hooks'来绘制画布,以允许Selenium捕获这些钩子并使用某些东西。
但我不确定我怎么能这样做。有没有人愿意分享任何经验或小例子?
答案 0 :(得分:3)
我也在研究同样的问题,经过一段时间的搜索,我发现Selenium访问了canvas元素。但它无法访问它的内部元素/子元素。因为selenium使用DOM模型,而canvas的子元素在DOM中不可见。 在查看提到here的一个示例之后,我们可以使用坐标与画布进行交互。但这是荒谬的,大多数时候我们会动态绘制元素,我们如何获得特定形状的坐标。 如果你有形状的坐标,可以使用上面的链接与它们一起玩。
答案 1 :(得分:-1)
public function testDraw() {
try {
$this->execute(array('script' => " var c = document.getElementById('canvas');
var ctx = c.getContext('2d');
ctx.beginPath();
ctx.arc(100, 75, 50, 0, 2 * Math.PI);
ctx.stroke();",
'args' => array()));
echo 'done';
sleep(10);
} catch (Exception $ex) {
echo 'not done';
}