【发布时间】:2021-04-07 19:23:14
【问题描述】:
我在使用 c# selenium 包装器时遇到了一些奇怪的情况。
我试图用多个不同的值一遍又一遍地填充文本框,并在每次尝试之间将其清除。我发现每当我使用 .Clear() 或 Cntrl A + Del 清除文本框时,.Text 分配不再有效,但 SendKeys 仍然有效。
editBox.Text = "test"; // works
editBox.Text = "test1"; // works
editBox.SendKeys(Keys.Tab); // works
editBox.Text = "test2"; // works
editBox.Text = "third"; // works
editBox.SendKeys(Keys.Control + "a"); // works
editBox.SendKeys(Keys.Delete); // works
//editBox.Clear(); // works
editBox.Text = "fourth"; // DOESN'T WORK
editBox.SendKeys("fifth"); // works
editBox.Text = "sixth"; // DOESN'T WORK
这是 Selenium、包装器中的错误,还是我正在考虑它应该如何工作的方式?我通常更喜欢使用 .Text 赋值,因为它在填写长表单时要快得多。如果我能在删除之前的值之后让它工作,那就太好了。
编辑: 哦,真糟糕,忘了我正在使用一个包装硒的控件: .文本换行 ((IJavaScriptExecutor)Browser).ExecuteScript("arguments[0].setAttribute(arguments[1],arguments[2]);", editBox, "value", value);
其他命令是直接的 selenium 命令,希望这有助于解释我在做什么。
【问题讨论】:
-
从浏览器的角度考虑这一点,确实有点道理。在字段上使用键盘后,该字段的“值”属性将被忽略。所以我想问题是,有没有办法在浏览器中扭转它。
-
如果您要替换全部内容,则无需先清除该框。
-
.文本分配?不是文字“getter”吗?
-
是的,我也有这个想法。在这种情况下它会起作用,但是在我的代码的另一部分中,我只在它为空时填充该值,所以如果出现这个问题,那将无法解决它。这可能是我必须解决的问题之一,因为这不是错误。
-
不,在我的情况下,.Text 的设置器是被激活的。我是这样写的,因为我从 CodedUI 迁移到 Selenium,所以我包装了 selenium 对象,这样我就不必更改我的代码。