C#等待Task.Delay与WinForms / Selenium无法正常工作

时间:2018-11-17 13:07:07

标签: c# selenium selenium-webdriver task delay

我正在使用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上尝试了已编译的程序,没有修复。 如果有人能指出我正确的方向,我会很高兴。

1 个答案:

答案 0 :(得分:0)

好吧,好像是某种僵局之类的。但是,我设法在每个await语句之后使用ConfigureAwait(false)来修复它。 我使用了来自Nuget的ConfigureAwait Checker,以快速完成工作。

相关问题