我已经对此进行了一些阅读,但无法找到具体的内容。我有一个需要与 Selenium 交互的画布对象。然而,众所周知,画布对象就像一个封闭的盒子。我读到您可以在画布内绘制的 JS 代码中添加“钩子”,以允许 Selenium 捕捉这些钩子并处理某些事情。
但我不确定我该怎么做。有没有人愿意分享任何经验或小例子?
我已经对此进行了一些阅读,但无法找到具体的内容。我有一个需要与 Selenium 交互的画布对象。然而,众所周知,画布对象就像一个封闭的盒子。我读到您可以在画布内绘制的 JS 代码中添加“钩子”,以允许 Selenium 捕捉这些钩子并处理某些事情。
但我不确定我该怎么做。有没有人愿意分享任何经验或小例子?
我也在研究同样的问题,在搜索了一段时间后,我了解到 Selenium 访问画布元素。但它不能访问它的内部元素/子元素。因为 selenium 使用了 DOM 模型并且画布的子元素在 DOM 中不可见。在查看了这里提到的一个示例之后,我们可以使用坐标与画布进行交互。但这很荒谬,大多数时候我们会动态绘制元素,我们如何获得特定形状的坐标。如果你有形状的坐标,你可以使用上面的链接来玩它们。
试试这个,它对我有用。这将在“画布”ID 上画一个圆圈。
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';
}