Как остановить Selenium, чтобы разрешить ручное разрешение капчи? - PullRequest
0 голосов
/ 28 января 2020

Я хочу запустить свой сценарий Selenium на странице входа в систему, подождать 30 секунд, чтобы я мог вручную разрешить капчу, и после успешного входа в систему начать работу по автоматизации работы.

Я используя приведенный ниже код, и он работает нормально вплоть до строки, в которой он вводит электронное письмо.

Я предполагал, что этот код будет ожидать своего рода пул, пока не увидит элемент H4 с определенным текстом в нем (логин успешно), но выдает исключение, когда элемент не найден.

IWebDriver driver = new ChromeDriver();

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));

driver.Navigate().GoToUrl("URL");
var loginEmail = driver.FindElement(By.Id("LOGINTextBTTN"));
loginEmail.SendKeys("myEmail");  //this line works

IWebElement firstResult = wait.Until(ExpectedConditions.ElementExists(By.XPath(@"//h4[text()='H4 Text']")));  //this lines fails with an exception

Console.WriteLine(firstResult.GetAttribute("textContent"));

Ответы [ 3 ]

1 голос
/ 28 января 2020

Введите код

driver.manage (). Timeouts (). ImplicitlyWait (60, TimeUnit.SECONDS); // Ожидание 60 Se c.

WebElement firstResult = wait.Until (ExpectedConditions.ElementExists (By.XPath (@ "// h4 [text () = 'H4 Text']")))) ;

Или Вы можете использовать Fluentwait

Wait wait = новый FluentWait (драйвер) .withTimeout (30, TimeUnit.SECONDS)
.pollingEvery (5, TimeUnit.SECONDS) .ignoring ( NoSuchElementException.class);

0 голосов
/ 28 января 2020

Вероятно что-то вроде:

import code
code.interact(local=dict(globals(), **locals()))

Затем Ctrl + D после того, как вы решите капчу

0 голосов
/ 28 января 2020

Я должен был иметь дело с этим некоторое время назад. То, как я решил, было со сном:

time.sleep(seconds need to solve) #for me it was around 60ish seconds
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...