3

我正在使用 C#OpenQA.Selenium.Support.PageObjectsOpenQA.Selenium.

在页面模型中,我尝试向具有输入掩码的文本框输入一封电子邮件。

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

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

然后在 SendKey 之后,我得到了类似这个截图的东西。 在此处输入图像描述

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

4

2 回答 2

3

这里有一些问题,在许多情况下,Selenium 输入数据的速度超过了 JavaScript 处理数据的速度,从而导致了奇怪的行为。最好的办法是先单击元素,然后再等待。然后开始输入数据。

Thread.Sleep(1000);

如果这仍然不起作用,您可能需要考虑直接注入 JavaScript 来填充文本输入的值。


更新

这是工作代码片段:

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

无需等待 1000 毫秒。

于 2016-06-22T14:57:27.460 回答
0

可能不是理想的解决方案,但它确实有效。

NuGet 一个名为Selenium.WebDriverBackedSelenium.

并使用以下代码片段代替SendKeys()

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

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

于 2016-06-22T15:47:01.693 回答