C # await Task.Delay Не работает как задумано с WinForms / Selenium - PullRequest
0 голосов
/ 17 ноября 2018

Я делаю тест с веб-сайтом, используя 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;
        }

Я попробовал скомпилированную программу на другом ПК, исправлений нет. был бы рад, если бы кто-нибудь мог указать мне правильное направление.

1 Ответ

0 голосов
/ 18 ноября 2018

Хорошо, похоже, это был какой-то тупик или что-то в этом роде. Однако мне удалось исправить это с помощью ConfigureAwait(false) после каждого оператора await. я использовал ConfigureAwait Checker из Nuget, чтобы сделать все быстро.

...