【发布时间】:2021-09-18 20:18:35
【问题描述】:
我正在尝试在我的测试中替换所有(或至少大部分) Thread.Sleep(),似乎 System.Timers 可以完成这项工作,但我不知道如何实现它。
或者如果你们知道其他替代品,请告诉我。
如果有人在这里帮助我,我将不胜感激。
谢谢。
编辑:对不起,这是我的第一个问题,我应该举个例子:
public void AdditionalCardIssueNoBankBranchSelected()
{
additionalCardApplicationPage.ClearBankConsultantCodeField();
additionalCardApplicationPage.TypeSalesOfficer();
additionalCardApplicationPage.TypeEIKBankCustomerAndPressGetDataButton();
additionalCardApplicationPage.ChooseMainCard();
chooseMainCardPage.TypeCustomerEikAndPressSearchButton();
Thread.Sleep(1000);
bankCardSearchPage.SelectFirstValidBankCardOther();
chooseMainCardPage.PressChooseMainCardButton();
additionalCardApplicationPage.PressStartApplicationButton();
Thread.Sleep(1000);
IAlert alert = driver.SwitchTo().Alert();
alert.Accept();
Assert.IsTrue(additionalCardApplicationPage.BankBranchCodeAlert.Displayed);
}
几乎所有我有Thread.Sleep() 的地方都是因为我正在等待页面完全加载,因为如果它没有,下一步操作将不会发生,因为我想要与之交互的元素还不可见。
有时 bankCardSearchPage.SelectFirstValidBankCardOther() 不会通过,因为卡片所在的表格尚不可见。
我希望我解释得很好。谢谢。
【问题讨论】:
-
你能至少举一个你想要
Thread.Sleep()替换的代码示例吗? -
所以你基本上想推出自己的
Thread.Sleep()? -
是的,基本上我想推出自己的 Thread.Sleep()
-
希望用计时器替换
Thread.Sleep(1000);背后的动机是什么?是否要防止当前线程被阻塞,从而使您的应用程序响应更快? -
Theodor Zoulias,看来计时器不是我在这里需要的,而是另一种明确的等待,就像一个 Cruisepandey 很好地帮助了我。我只知道 Thread.Sleep 不好,应该更换,正在网上寻找解决方案,并认为计时器可以完成工作,但现在我知道了。无论如何,感谢您提供帮助:)
标签: c# visual-studio selenium selenium-webdriver