#vba #selenium #one-time-password
#vba #селен #одноразовый пароль
Вопрос:
Я хочу перейти на новую страницу вручную, а затем нажать кнопку на этой странице с помощью скрипта VBA.
На данный момент клиент входит на страницу, заполняет данные и обходит капчу с помощью расширения Chrome. Теперь ему нужно автоматизировать заполнение OTP и 3 последовательных клика на 3 последовательных страницах, для чего мне нужно сделать вот так. В IE, используя окно оболочки, я могу делать то, что нужно, но капчу там использовать нельзя.Таким образом, я хочу запустить chrome через webdriver, чтобы получить дескриптор браузера, а затем позволить пользователю выполнить ввод на странице в обход капчи.На следующей странице я заполню OTP из VBA.Я предполагаю, что ссылка на браузер останется прежней, URL-адрес будет продолжать меняться.
Вот как я открываю браузер. Браузер открывает, пользователь делает ввод и переходит на следующую страницу OTP. Вот как мне получить текстовое поле элемента, чтобы заполнить его.
Dim d As Webdriver Set d = New ChromeDriver Const URL = "https://www.google.com/" d.Start "Chrome"
Как это сделать?
Пожалуйста, дайте какое-нибудь направление
Спасибо
Комментарии:
1. Какой код вы пробовали до сих пор? Где у вас с этим возникли проблемы? Пожалуйста, включите это в свой вопрос.
Ответ №1:
Если вы знаете, каким будет текст нового окна, например, название, вы можете использовать следующий метод из примеров автора Флорана БРЕЕРЕ. Однако вам потребуется ввести код для запуска предварительно сохраненного профиля с соответствующими файлами cookie/надстройкой или установить надстройку в рамках запуска. Есть примеры того, как это сделать мне и ЯссеркХалилу на StackOverflow (и, возможно, другим).
Private Assert As New Selenium.Assert Private Sub Windows_Switch() Dim driver As New ChromeDriver driver.Get "http://the-internet.herokuapp.com/windows" driver.FindElementByCss(".example a").Click 'Switch to a new window driver.SwitchToNextWindow Assert.Equals "New Window", driver.title 'Switch to the previous activated window driver.SwitchToPreviousWindow Assert.NotEquals "New Window", driver.title 'Stop the browser driver.Quit End Sub
Комментарии:
1. Спасибо, похоже, это выполнимо. Я объявил webdriver глобальным параметром процедуры. И я использую то же самое в разных макросах. Не учитывая, какая страница загружена в данный момент, я просто нажимаю кнопки, если она там есть, она будет нажиматься. Я продолжу это завтра.