使用behat和mink测试拖放

时间:2017-03-20 08:07:39

标签: behat mink

我正在尝试模拟behat测试中的拖放UI行为。到目前为止,尽管没有成功,但水貂allegedly supporting that interaction

奇怪的是,我很难找到关于这些主题的任何相关博客文章。我发现了{thishttp://www.pix-art.be/post/testing-drag-and-drop-with-behat-and-guzzle )对我帮助不大。特别是后者。

有没有人对如何解决问题或有实际测试交互的经验有任何建​​议?

1 个答案:

答案 0 :(得分:0)

您可以在ownCloud测试代码中找到一个有效的示例,它确实通过拖放将文件移动到文件夹中:

    public function moveFileTo(
        $name, $destination, Session $session, $maxRetries = STANDARD_RETRY_COUNT
    ) {
        $toMoveFileRow = $this->findFileRowByName($name, $session);
        $destinationFileRow = $this->findFileRowByName($destination, $session);
        $this->initAjaxCounters($session);
        $this->resetSumStartedAjaxRequests($session);
        for ($retryCounter = 0; $retryCounter < $maxRetries; $retryCounter++) {
            $toMoveFileRow->findFileLink()->dragTo(
                $destinationFileRow->findFileLink()
            );
            $this->waitForAjaxCallsToStartAndFinish($session);
            $countXHRRequests = $this->getSumStartedAjaxRequests($session);
            if ($countXHRRequests === 0) {
                \error_log("Error while moving file");
            } else {
                break;
            }
        }
        if ($retryCounter > 0) {
            $message
                = "INFORMATION: retried to move file $retryCounter times";
            echo $message;
            \error_log($message);
        }
    }

来自:https://github.com/owncloud/core/blob/47396de109965110276deb545a9bd09f375c9823/tests/acceptance/features/lib/FilesPageCRUD.php#L243

首先,它找到必须移动的文件的NodeElement,然后找到目标的NodeElement,并调用$fileToBeMovedElement->dragTo($destinationElement)

因为事实证明这很不稳定,所以dragTo函数周围存在一个重试循环。为了测试拖放操作是否有效,代码检查是否有任何AJAX调用被取消(在此特定应用中,此拖放操作会取消WebDAV请求)