当前位置: 首页 > 面试题库 >

我将如何使用Behat制作假签名

郭俊拔
2023-03-14
问题内容

测试代码的图片
/
工作签名的图片您好,我正在将behat与与貂皮集成的selenium驱动程序一起使用,我正在尝试编写一个输入假签名的测试。我们使用鼠标在屏幕上绘制签名,因此我希望selenium能够为我做到这一点。我尝试获取该字段的ID并使用dragTo(’我页面上的另一个元素’),但它仅在签名框中单击,而没有执行任何其他操作。

我正在使用的框架是laravel for php。

$field = $this->getSession()->getPage()->findById('ctlSignature);

$field->dragTo('another id on my page');

这是行不通的。

如果我可以告诉鼠标单击,然后向右移动10个像素,然后再次单击,那将是完美的,因为我可以使用它来绘制签名。

谢谢您的回应,但是当我执行这段程式码时出现错误,

$script = "var c = document.querySelector('#ctlSignature'); var ctx = c.getContext('2d'); ctx.moveTo(20,20); ctx.lineTo(50,50); ctx.stroke()";

$this->getSession()->evaluateScript($script);

将错误发送回意外的令牌var。如果我尝试在字符串中使用它会发送另一个错误,指出意外令牌


问题答案:

解决方案是使用可以与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(如果有)。

请使用相同的脚本查看下面的步骤,但是稍稍更改一下以编写文本:

   /**
     * @Then /^signature test$/
     */
    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事件触发器。

    /**

     * @Then /^signature test$/

     */

    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);

    }


 类似资料:
  • 我尝试用html、css、JavaScript制作切换标签。 这是我的代码,我试过了。 null null 但我想用仅有的HTML和CSS来制作这个函数。所以我就这样试着。但它不起作用。 null null 请帮帮我.提前谢谢你。

  • 问题内容: 方案:修改并保存对广告系列的不完整更改 关键是,最后一步中的“错误提示框”是一个ajax调用,它将根据操作成功而带来一个绿色或红色提示框。目前,我要做的是在“然后按保存…”之后,我将进行一次sleep(3),以使其有时间显示此气球。您浪费时间似乎不太明智,也因为在某些时候处理此调用可能花费更多或更少的时间。 你们如何让Behat测试等待Ajax完成,而不仅仅是让野兽入睡? 非常感谢您的

  • 我希望制作一个像jQuery标签一样的标签系统,用户可以在不同的面板之间切换以查看不同的内容: 但是,我需要在不使用javascript的情况下完成这一工作,以便没有启用javascript的用户可以轻松地使用该站点。此外,我希望避免导航到不同的静态页面,每个页面对应于“tab”具有不同的样式。有什么好方法来解决这个问题?

  • Behat 是个行为驱动的开发(BDD)框架,可以测试业务期望,允许用户编写便于人们阅读的故事驱动代码,描述该应用应该怎样工作。任何人都能快速简单的掌握它的使用方法。

  • 问题内容: 我有pkcs8_rsa_private_key文件,它是由openssl从rsa_private_key.pem文件生成的。 我需要使用python中的私钥进行签名,并使用以下Java代码进行相同的签名。 问题答案: PKCS#8定义了一种编码和传输秘密密钥的方法,并且它不是特定于OpenSSL的。PKCS#1定义了一种使用RSA密钥的方法(无论它如何以PKCS#8加载到您的应用程序中