Selenium SendKey与jquery输入掩码冲突

时间:2016-06-22 14:26:38

标签: c# selenium jquery-inputmask

我使用的是C#OpenQA.Selenium.Support.PageObjectsOpenQA.Selenium

在页面模型中,我尝试在包含输入掩码的文本框中输入电子邮件。

[FindsBy(How = How.Id, Using = "Email")]
private IWebElement _txtEmail;

public string Email
{
    set
    {
        _txtEmail.SendKeys(value);
    }
}

然后在SendKey之后,我得到了类似这个截图的内容。 enter image description here

有输入掩码时SendKeys的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

这里存在一些问题,在很多情况下,Selenium输入数据的速度比JavaScript处理数据的速度快,导致奇怪的行为。最好的办法是先点击元素,然后再等一下。然后开始输入数据。

Thread.Sleep(1000);

如果仍然无效,您可能需要考虑直接注入JavaScript然后填充文本输入的值。

更新

以下是工作代码段:

public string Email
{
    set
    {
        _txtEmail.Click();
        Thread.Sleep(10);
        _txtEmail.SendKeys(value);
    }
}

无需等待1000毫秒。

答案 1 :(得分:0)

可能不是理想的解决方案,但它只是起作用。

NuGet一个名为Selenium.WebDriverBackedSelenium的包。

并使用以下代码段取代SendKeys()

public string Email
{
    set
    {
        var selenium = new WebDriverBackedSelenium(driver, MyPageUrl);
        selenium.Start();
        selenium.Type("Email", value);
    }
}

但必须有一个更好的方法。在等待更好的答案时,让我们将此作为临时解决方案发布。