C # и Selenium — время ожидания

#c# #selenium

#c# #селен

Вопрос:

В начале автоматического теста у меня есть процедура входа в систему, которая после загрузки URL-адреса вводит идентификатор сайта, имя пользователя и пароль, прежде чем нажать login.

Проблема в том, что логин нажимается до ввода пароля, что приводит к неудачному входу в систему — тест в спешке спотыкается о себя!

В старые времена JS я бы использовал browser.wait(nnnn) то, что будет хорошо работать. Так что не столько ожидание присутствия элемента, сколько ожидание, пока SendKeys сделает свое дело.

Существует ли c # эквивалент browser.wait()?

Вот (экспериментальный) код — фактические данные были удалены.

 [TestFixture]
public class Chrome_Sample_test
{
    private IWebDriver driver;
    public string homeURL;


    [Test(Description = "Check SauceLabs Homepage for Login Link")]
    public void Login_is_on_home_page()
    {


        homeURL = "https:/<URL>/";
        driver.Navigate().GoToUrl(homeURL);
        WebDriverWait wait = new WebDriverWait(driver, System.TimeSpan.FromSeconds(15));
        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);

        IWebElement siteID;
       
        siteID = driver.FindElement(By.XPath("//*[@id='winp_SiteID']"));
     
        siteID.SendKeys("<Id>");


        IWebElement usrName;

        usrName = driver.FindElement(By.XPath("//*[@id='winp_UserID']"));

        usrName.SendKeys("<UsrName>");


        IWebElement usrPass;

        usrPass = driver.FindElement(By.XPath("//*[@id='winp_Password']"));

        usrPass.SendKeys("<UsrPass>");

       
        IWebElement logOn;

        logOn = driver.FindElement(By.XPath("//*[@id='btn_LogOn']"));

        logOn.Click();

      


        //IWebElement element =
        //driver.FindElement(By.XPath("//a[@href='/beta/login']"));
        //          Assert.AreEqual("Sign In", element.GetAttribute("text"));


    }


    [TearDown]
    public void TearDownTest()
    {
        driver.Close();
    }


    [SetUp]
    public void SetupTest()
    {
        homeURL = "https://<UL>/";
        driver = new InternetExplorerDriver();

    }


}
 

Комментарии:

1. Эй, ты проверил это? browserstack.com/guide/wait-commands-in-selenium-webdriver Разве это не помогло?

2. Этого не должно происходить. Такое ощущение, что с InternetExplorerDriver что-то не так. Можете ли вы использовать для этого современный браузер, такой как Chrome, Firefox, Edge, Safari или Opera? (буквально любой браузер, кроме Internet Explorer). SendKeys Метод абсолютно не должен возвращать управление вызывающей стороне, пока все символы не будут присутствовать в поле пароля. Это похоже на ошибку.

3. @GregBurghardt Да, это БЫЛ Chrome — это наш любимый браузер. Мы склонны избегать IE 🙂