Selenium C#在键入之前将光标设置为输入的结尾
将Selenium与XUnit、C#和ASP.NET Core 2.2一起使用 我有一个测试,我们想测试文本是否可以添加到输入并保存在crud操作中 我们做了以下工作:Selenium C#在键入之前将光标设置为输入的结尾,c#,selenium,.net-core,C#,Selenium,.net Core,将Selenium与XUnit、C#和ASP.NET Core 2.2一起使用 我有一个测试,我们想测试文本是否可以添加到输入并保存在crud操作中 我们做了以下工作: 单击一个输入web元素(称之为descriptionTextArea)//假设输入中有一个随机位置 发送结束键以将光标置于输入的末尾 向输入发送字符串 单击“保存”按钮并重新加载页面 从页面刷新中再次获取输入(称为descriptionTextArea_2) 断言文本区域的值是原始文本与末尾添加的文本连接在一起 输入的预期新值为
如何使selenium每次都将文本放在输入的末尾。您的代码很好。这可能是时间问题。由于您使用Xunit,并且由于执行速度更快,有时会发生这种情况。您可以像这样使用
异步任务。
一旦快速任务完成(Keys.end)然后它应该输入值。检查链接@KunduK,我已经在需要的地方使用了async wait。但是这两个方法:SendKeys()和Click()返回void,而不是Tasks(根据下面的链接)。所以我不能等他们了。这在我看来也是同步和阻塞的,因为它们是空的。您可以在每个操作中提供一些延迟`等待任务。延迟(100)`好的,我会试试,但我正在寻找一个更可靠的解决方案。理论上,这可能比我选择的延迟时间要长。
// Assume that the descriptionTextArea has an original text of "This is a description".
string descriptionAddition = "!!!!";
descriptionTextArea.Click();
descriptionTextArea.SendKeys(Keys.End); // Go to end of input text.
descriptionTextArea.SendKeys(descriptionAddition);
// Save the page and reload ...
IWebElement goalDescriptionTextAfter = // same as descriptionTextArea but for new page reload
string newDescription = $"{originalText}{descriptionAddition}";
Assert.Equal(newDescription, goalDescriptionTextAfter.GetAttribute("value").Trim());