c# - C# await Task.Delay 不能按预期使用 WinForms/Selenium
问题描述
我正在使用 Selenium 和 Winforms 对网站进行测试。我必须经常在这里和那里使用延迟。我仍然无法理解可能是什么问题。而且我对整个“死锁”的事情并不是那么好,但是我在这里检查了几个答案,并且代码似乎不是死锁的。
所以基本上,这是internal async Task HandleInput()
使用它的功能是循环遍历文本文件的每一行,然后将其输入到网站。循环,每个逻辑都正确到位,直到昨天和今天,当我启动 VS 并对应用程序进行检查时,它才在await Task.Delay(1000);
写入的那一行被击中。另一方面,Task.Delay(1000).Wait(); 工作正常。
这就是我从主HandleInput()
函数调用任务函数的方式。
Logger.LogGenericText("starting process...");
await SignInToSite(DriverChrome, Wait, id, pass);
这是SignInToSite()
功能:
功能头:public async Task SignInToSite(IWebDriver DriverChrome, WebDriverWait Wait, string id, string pass)
try
{
Logger.LogGenericText("Acessing Login URL...");
DriverChrome.Navigate().GoToUrl("xxxxxxxxxxxxxxxxxxxxx");
await Task.Delay(1000); //entire program goes to standstill in here, UI isnt struck.
Logger.LogGenericText("Passing id and Password to respective fields...");
Wait.Until(d => d.FindElement(By.Name("username"))).SendKeys(steamId);
await Task.Delay(1000);
Wait.Until(d => d.FindElement(By.Name("password"))).SendKeys(pass);
Wait.Until(d => d.FindElement(By.Id("UserLogin"))).Click();
await Task.Delay(3000);
}
catch (Exception ex)
{
Logger.LogGenericText(ex.ToString());
return;
}
我在另一台PC上尝试了编译程序,没有修复。如果有人能指出我正确的方向,我会很高兴。
解决方案
好吧,似乎这是某种僵局之类的。但是,我设法通过ConfigureAwait(false)
在每个等待语句之后使用来修复它。我使用ConfigureAwait Checker
From Nuget 快速完成任务。
推荐阅读
- docker - 如何 24/7 全天候运行 heroku 容器?
- openedx - 打开 Edx 电子商务问题
- css - 自动完成标签字段中的css对齐问题
- arrays - 如何在 SCSS 中比较 2 个不同的列表值?
- amazon-web-services - 如何更改 AWS SSO 中的默认目录别名?
- sql - 如何使 SQL 请求 COUNT DISTINCT 有条件?
- java - Spring Boot如何在更新前检查数据库中的编码密码是否与表单中的密码匹配
- java - 如何获得犹太历的一年中的一周
- user-interface - Jupyter 交互式小部件未正确执行
- python - Keras -“节点”对象没有属性“输出掩码”