Je construis un cadre de test pour mon site Web Je veux séparer complètement le cadre du test Le problème est que lorsque j'écris un test, parfois l'Assert a besoin de temps jusqu'à ce que cela puisse être vrai, par exemple si je suis sur Télécharger la page du fichier et quand le fichier est téléchargé le site Web devrait afficher la page Téléchargé avec succès le fichier mais il faudra beaucoup de temps jusqu'à ce que le navigateur atteigne cette pageSelenium Waits Logic
Comment est-ce que je devrais forcer le Assert à attendre quelque temps avant qu'il renvoie le résultat?
un code qui pourrait expliquer ma façon de travail actuel:
Télécharger la page Classe
Public class UploadPage
{
[FindsBy(How = How.Name, Using = "upload-button")]
public IWebElement BtnUpload { get; set; }
public UploadPage()
{
PageFactory.InitElements(Driver, this);
}
public void UploadFile(string path)
{
//select file
BtnUpload.Click();
}
}
Télécharger réussie Page:
Public class UploadSuccessfulPage
{
[FindsBy(How = How.Name, Using = "success-message")]
public IWebElement LblSuccessMessage{ get; set; }
public UploadSuccessfulPage()
{
PageFactory.InitElements(Driver, this);
}
public bool IsAt()
{
Driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(60))
return Driver.url==configurations.UploadSuccessfulPageURL;
}
}
Méthode d'essai:
public void TestUpload()
{
UploadPage uploadPage= new UploadPage();
uploadPage.UploadFile(path);
UploadSuccessfulPage successPage= new UploadSuccessfulPage();
Assert.IsTrue(successPage.IsAt());
}
wh fr J'écris mes tests de cette façon les assert n'attendent pas malgré le fait que IsAt() contient une attente implicite
P.S: Je n'ai pas l'intention d'utiliser Thread.Sleep();
merci je vais l'essayer et de revenir à vous, pouvez-vous s'il vous plaît éclairez un peu sur la façon dont cela va résoudre le problème? –
Tout d'abord, à partir du code fourni pour 'bool IsAt()', je ne vois aucune logique sur ce que vous attendez de lui. La définition de ImplicitWait affectera uniquement les commandes suivantes que vous appelez (comme 'driver.FindElement'). Les deux exemples que j'ai montrés ci-dessus indiquent clairement quelle méthode 'IsAt()' devrait faire - c'est de vérifier si le message de succès est affiché ou non. Je préférerais la seconde plus cependant. –
mais j'ai écrit dans ma méthode IsAt que sous l'implicitwait il y a une condition que l'étiquette puisse être trouvée –