Selenium SendKey 与 jquery inputmask 冲突
Selenium SendKey conflict with jquery inputmask
我正在使用 C# OpenQA.Selenium.Support.PageObjects
和 OpenQA.Selenium
。
在页面模型中,我尝试将电子邮件输入到具有输入掩码的文本框。
[FindsBy(How = How.Id, Using = "Email")]
private IWebElement _txtEmail;
public string Email
{
set
{
_txtEmail.SendKeys(value);
}
}
然后在 SendKey 之后,我得到了类似这个截图的东西。
有输入掩码时SendKeys的正确方法是什么?
这里有一些问题,在许多情况下,Selenium 输入数据的速度快于 JavaScript 处理数据的速度,从而导致奇怪的行为。最好的办法是先单击该元素,而不是等待一秒钟。然后开始输入数据。
Thread.Sleep(1000);
如果仍然无效,您可能需要考虑直接注入 JavaScript 以填充文本输入的值。
更新
这是工作代码片段:
public string Email
{
set
{
_txtEmail.Click();
Thread.Sleep(10);
_txtEmail.SendKeys(value);
}
}
无需等待1000ms。
可能不是理想的解决方案,但它确实有效。
NuGet 一个名为 Selenium.WebDriverBackedSelenium
的包。
并使用以下代码片段代替 SendKeys()
public string Email
{
set
{
var selenium = new WebDriverBackedSelenium(driver, MyPageUrl);
selenium.Start();
selenium.Type("Email", value);
}
}
但是必须有更好的方法。让我们post在这里作为一个临时解决方案,同时等待更好的答案。
我正在使用 C# OpenQA.Selenium.Support.PageObjects
和 OpenQA.Selenium
。
在页面模型中,我尝试将电子邮件输入到具有输入掩码的文本框。
[FindsBy(How = How.Id, Using = "Email")]
private IWebElement _txtEmail;
public string Email
{
set
{
_txtEmail.SendKeys(value);
}
}
然后在 SendKey 之后,我得到了类似这个截图的东西。
有输入掩码时SendKeys的正确方法是什么?
这里有一些问题,在许多情况下,Selenium 输入数据的速度快于 JavaScript 处理数据的速度,从而导致奇怪的行为。最好的办法是先单击该元素,而不是等待一秒钟。然后开始输入数据。
Thread.Sleep(1000);
如果仍然无效,您可能需要考虑直接注入 JavaScript 以填充文本输入的值。
更新
这是工作代码片段:
public string Email
{
set
{
_txtEmail.Click();
Thread.Sleep(10);
_txtEmail.SendKeys(value);
}
}
无需等待1000ms。
可能不是理想的解决方案,但它确实有效。
NuGet 一个名为 Selenium.WebDriverBackedSelenium
的包。
并使用以下代码片段代替 SendKeys()
public string Email
{
set
{
var selenium = new WebDriverBackedSelenium(driver, MyPageUrl);
selenium.Start();
selenium.Type("Email", value);
}
}
但是必须有更好的方法。让我们post在这里作为一个临时解决方案,同时等待更好的答案。