Как получить доступ к элементам 2-й, 3-й страницы после навигации вручную в браузере chrome, запущенном VBA

#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 глобальным параметром процедуры. И я использую то же самое в разных макросах. Не учитывая, какая страница загружена в данный момент, я просто нажимаю кнопки, если она там есть, она будет нажиматься. Я продолжу это завтра.