2015-03-31 2 views
0

Возможно ли в Selenium Webdriver приостановить выполнение кода с помощью webdriver.wait, пока пользователь не нажмет кнопку входа для формы? Форма содержит Captcha, которую пользователь должен заполнить вручную, поэтому я не могу автоматически нажимать кнопку с помощью скрипта. Кнопка входа в систему по щелчку возвращает значение функции JavaScript в виде логического значения i.e либо true, либо false.Подождите, пока кнопка входа в систему будет нажата вручную в selenium webdriver, используя Java

Любое возможное решение этой проблемы?

+0

Я думаю, что лучший подход описан здесь: http://stackoverflow.com/a/28883339/600486 - кстати, сделать поиск на SO, и вы получите много предложений – ochi

+0

Проблема не с captcha, я ищу решение, в котором код приостанавливается до тех пор, пока не будет выполнено определенное условие, которое в этой ситуации будет, когда пользователь нажмет кнопку входа в систему. Спасибо за предложение btw :) –

ответ

2

Редактировать: полностью новый ответ после получения дополнительной информации.

С ниже коде, это то, что происходит:

  1. Селен входит в пользовательские данные
  2. я затем вручную обновить страницу (потому что у меня нет данных входа в систему, чтобы проверить)
  3. Selenium вводит пользовательские данные снова

(переменная W представляет собой ранее определенный WebDriverWait.)

 driver.Navigate().GoToUrl("https://www.irctc.co.in/eticketing/loginHome.jsf"); 

     // will try looping as long as you're on the relevant page 
     do 
     { 
      try 
      { 
       IWebElement username = w.Until(ExpectedConditions.ElementIsVisible(By.Id("usernameId"))); 
       IWebElement password = driver.FindElement(By.Name("j_password")); 
       if (String.IsNullOrEmpty(username.GetAttribute("value"))) 
       { 
        username.SendKeys("a"); 
        password.SendKeys("b"); 
       } 
      } 
      catch (Exception) 
      { 
       // page is reloading, just wait another round 
      } 
     } while (!String.Equals(driver.Url, "put url after login here")); 
+0

Спасибо за ответ :) Ситуация, с которой я столкнулся, заключается в том, что когда пользователь посещает страницу входа в систему, его учетные данные автоматически заполняются. В случае, когда пользователь вводит неверный код, страница обновляется, и он должен вручную вводить свои учетные данные. Я хочу избежать этой ситуации, для которой требуется условие, которое я мог бы использовать для выполнения определенного типа проверки. Мне было интересно, можно ли получить значение функции JS на веб-странице? Может использовать его для достижения вышеупомянутых функциональных возможностей. –

+0

Selenium заполняет учетные данные. Затем Selenium ждет условие, которое в этом случае звучит так: «подождите, пока поля учетных данных снова не будут пустыми». Затем вы вручную заполните неверный код. Селен находит пустые поля и продолжает выполнение. Или я все еще не понимаю правильно? – FDM

+0

Selenium заполняет учетные данные, ждет, пока пользователь не войдет в капчу, и нажмите кнопку входа вручную. Если пользователь не введет правильную капчу, страница перезагрузится, но на этот раз selenium не сможет снова заполнить детали, потому что выполнение кода оставило блок кода входа. Возможно ли, чтобы селен заполнил детали каждый раз, когда страница обновляется? –

Смежные вопросы