Я строю рамки тестирования для своего сайта Я хочу полностью отделить структуру от теста Проблема заключается в том, что когда я пишу тест, иногда для утверждения требуется время, пока оно не может быть истинным, например, если я на странице загрузки файла и при загрузке файла на веб-сайте должен отображаться файл, загруженный с успешной страницей, но для этого потребуется много времени, пока браузер не достигнет этой страницы.Selenium Waits Logic
Как заставить Assert ждать когда-нибудь, прежде чем он вернет результат?
некоторый код, который мог бы объяснить мой текущий способ работы:
Загрузить Страница Класс
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();
}
}
Преуспевающий Загрузить Страница:
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;
}
}
Метод испытания:
public void TestUpload()
{
UploadPage uploadPage= new UploadPage();
uploadPage.UploadFile(path);
UploadSuccessfulPage successPage= new UploadSuccessfulPage();
Assert.IsTrue(successPage.IsAt());
}
белый ru Я пишу свои тесты таким образом, что утверждение не ждет, несмотря на то, что IsAt() содержит неявный wait
P.S: Я не собираюсь использовать Thread.Sleep();
спасибо Я попробую его и вернусь к вам, не могли бы вы немного осветить, как это решит проблему? –
Во-первых, из вашего предоставленного кода для 'bool IsAt()', я не вижу никакой логики о том, что вы ожидаете от этого. Установка ImplicitWait будет влиять только на любую следующую команду, которую вы вызываете (например, 'driver.FindElement'). В двух примерах, которые я показал выше, четко говорится о том, какой метод 'IsAt()' должен делать, - проверить, отображается ли сообщение об успешном завершении. Я бы предпочел еще второй. –
, но я написал в моем методе IsAt, что под имплицитной точкой есть условие, что метка может быть найдена –