9

我已经对此进行了一些阅读,但无法找到具体的内容。我有一个需要与 Selenium 交互的画布对象。然而,众所周知,画布对象就像一个封闭的盒子。我读到您可以在画布内绘制的 JS 代码中添加“钩子”,以允许 Selenium 捕捉这些钩子并处理某些事情。

但我不确定我该怎么做。有没有人愿意分享任何经验或小例子?

4

2 回答 2

7

我也在研究同样的问题,在搜索了一段时间后,我了解到 Selenium 访问画布元素。但它不能访问它的内部元素/子元素。因为 selenium 使用了 DOM 模型并且画布的子元素在 DOM 中不可见。在查看了这里提到的一个示例之后,我们可以使用坐标与画布进行交互。但这很荒谬,大多数时候我们会动态绘制元素,我们如何获得特定形状的坐标。如果你有形状的坐标,你可以使用上面的链接来玩它们。

于 2013-11-29T05:26:03.080 回答
-1

试试这个,它对我有用。这将在“画布”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';
        }
于 2017-04-17T12:56:49.827 回答