Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编码UI回放-在特定文本框中输入文本时引发错误(带javaScript过滤按键)_Javascript_.net_Coded Ui Tests - Fatal编程技术网

编码UI回放-在特定文本框中输入文本时引发错误(带javaScript过滤按键)

编码UI回放-在特定文本框中输入文本时引发错误(带javaScript过滤按键),javascript,.net,coded-ui-tests,Javascript,.net,Coded Ui Tests,我刚刚开始编写一些编码的ui测试,当我试图通过javaScript函数将值输入到文本框中时,我在播放过程中遇到了一个问题,该文本框仅限于数字十进制值。我已经确定脚本是罪魁祸首,因为当它被禁用时,测试会成功运行 根据函数的约束条件,我在测试中输入的值是合法的,因此我不理解为什么在测试运行程序输入异常时抛出异常。有人能提供一些见解吗?javascript函数似乎适合我们的目的,因此,为了使自动化测试能够工作而不得不删除它似乎是不幸的 以下是一些更详细的信息: 我的测试相当直接。我正在查找2个text

我刚刚开始编写一些编码的ui测试,当我试图通过javaScript函数将值输入到文本框中时,我在播放过程中遇到了一个问题,该文本框仅限于数字十进制值。我已经确定脚本是罪魁祸首,因为当它被禁用时,测试会成功运行

根据函数的约束条件,我在测试中输入的值是合法的,因此我不理解为什么在测试运行程序输入异常时抛出异常。有人能提供一些见解吗?javascript函数似乎适合我们的目的,因此,为了使自动化测试能够工作而不得不删除它似乎是不幸的

以下是一些更详细的信息:

我的测试相当直接。我正在查找2个textbox控件,并验证当第一个控件中缺少值时是否显示正确的验证消息。设置OrderIdTextBox.Text可以工作,但设置AmountTextBox.Text会在启用下面的js函数时引发异常:

[TestMethod]
public void Should_show_validation_error_if_orderId_is_missing()
{
    _page.OrderIdTextBox.Text = "";
    if (_page.AmountTextBox.Exists)
    {
        _page.AmountTextBox.Text = "10.00";
    }
    Mouse.Click(SubmitButton);
    Assert.AreEqual(true, _page.OrderIdValidationSpan.Exists);
}
这是页面上的javascript,用于过滤不可接受的击键:

$(document).on('keydown', ".number", function (event) {
    // Allow: backspace, delete, tab, escape, enter, and decimal
    if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 || event.keyCode == 110 || event.keyCode == 190 ||
    // Allow: Ctrl+A
            (event.keyCode == 65 && event.ctrlKey === true) ||
    // Allow: home, end, left, right
            (event.keyCode >= 35 && event.keyCode <= 39)) {
        // let it happen, don't do anything
        return;
    }
    else {
        // Ensure that it is a number and stop the keypress
        if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) {
            event.preventDefault();
        }
    }
});
试一试

这个类似的问题引出了一个go4answers主题,提出了上述建议

默认情况下,回放将键作为Unicode发送到任何应用程序。可能需要将密钥作为扫描码发送到某些应用程序。我们可以通过使用一个超负荷的Keyboard.Sendkeys函数来实现这一点

尝试

这个类似的问题引出了一个go4answers主题,提出了上述建议

默认情况下,回放将键作为Unicode发送到任何应用程序。可能需要将密钥作为扫描码发送到某些应用程序。我们可以通过使用一个超负荷的Keyboard.Sendkeys函数来实现这一点

中,您还可以尝试:

if (_page.AmountTextBox.Exists)
    {
        Mouse.Click(_page.AmountTextBox);
        Keyboard.Sendkeys("10.00");
    }
您也可以尝试:

if (_page.AmountTextBox.Exists)
    {
        Mouse.Click(_page.AmountTextBox);
        Keyboard.Sendkeys("10.00");
    }

谢谢你的建议。当我进行此更改时,文本框仍然仅使用禁用脚本函数时发送的值进行更新。不过,有趣的是,启用脚本时并没有抛出异常;关键点似乎没有通过脚本的过滤器。很有趣!基达的建议奏效了吗?甚至可能是两者的组合。我不会删除javascript,但也许它可以以不同的方式处理键值?虽然我比javascript更了解编码ui。基达的解决方案确实有效,从我从他的解释中收集到的信息来看,这也许可以解释为什么这个方案不起作用。如果通过文本发送相同的默认unicode值=。。。操作也通过SendKeys操作发送,我想这可以解释为什么发送的字符串从未出现在我的文本框中。我对此进行了更多的研究,并且键盘中有一个重载。SendKeys方法包含一个isUnicode参数。当我将其设置为false时,您的建议满足了我的需要。啊,我知道有过载,但找不到文档,所以我怀疑自己!很高兴你找到了!谢谢你的建议。当我进行此更改时,文本框仍然仅使用禁用脚本函数时发送的值进行更新。不过,有趣的是,启用脚本时并没有抛出异常;关键点似乎没有通过脚本的过滤器。很有趣!基达的建议奏效了吗?甚至可能是两者的组合。我不会删除javascript,但也许它可以以不同的方式处理键值?虽然我比javascript更了解编码ui。基达的解决方案确实有效,从我从他的解释中收集到的信息来看,这也许可以解释为什么这个方案不起作用。如果通过文本发送相同的默认unicode值=。。。操作也通过SendKeys操作发送,我想这可以解释为什么发送的字符串从未出现在我的文本框中。我对此进行了更多的研究,并且键盘中有一个重载。SendKeys方法包含一个isUnicode参数。当我将其设置为false时,您的建议满足了我的需要。啊,我知道有过载,但找不到文档,所以我怀疑自己!很高兴你找到了!
if (_page.AmountTextBox.Exists)
    {
        Mouse.Click(_page.AmountTextBox);
        Keyboard.Sendkeys("10.00");
    }