Я пытаюсь открыть веб-страницу VBA, ввести пароль и нажать «Отправить». Методы, которые работали для меня в прошлом, похоже, не работают.
Я пробовал использовать .FindElementById, используя как New InternetExplorerMedium, так и Selenium, а также пробовал Xpath с селеном. Все они не могут найти элемент на странице. Во время устранения неполадок я заметил, что если я попытаюсь прокрутить коллекцию элементов с тегом «вход», коллекция останется пустой при использовании .FindElementsByTag("input"). Это меня очень смутило, поэтому я заставил VBA открыть веб-страницу и распечатать outerHTML. Это напечатано:
HTML:
<FRAME id=top noResize marginHeight=10 src = "top.html" frameBorder=0 name=top marginWidth=10 scrolling=no>
<FRAME id=Login noResize marginHeight=0 src = "login.html" frameBorder=0 name=Login marginWidth=15 scrolling=no>
<FRAME id=bottom noResize marginHeight=10 src = "bottom.html" frameBorder=0 name=bottom marginWidth=10 scrolling=no>
<NOFRAMES></NOFRAMES>
Это полностью отличается от того, что я вижу, когда вручную проверяю поле пароля, которое пытаюсь заполнить; Я понимаю:
<input type = "password" size = "15" id = "password" name = "pswd" maxlength = "33">
но это не видно VBA при загрузке страницы. Что мне не хватает? Это мой первый вопрос, заданный в StackOverflow, поэтому, если мой формат неверен, я извиняюсь.
с селеном вы пробовали switchTo .FindElementById("Login"), чтобы перейти во фрейм входа?
@QHarr, это сработало! Я использовал switchTo .FindElementById("Login") , и как только я переключился на фрейм, сработал FindElementById("password"). Отмечать сообщение как решенное?
Я опубликую ответ, который вы можете принять
Круто, я также попытался отметить ваш ответ как полезный, но я, видимо, новичок.






вам нужно сначала переключиться на кадр, затем продолжить, как раньше
.SwitchToFrame .FindElementById("Login")
Обратите внимание, что элементы
<frame>и<noframes>устарели уже несколько лет.