Как отправить текст в поле имени пользователя в iframe с помощью Selenium VBA - PullRequest
1 голос
/ 21 января 2020

Я пытаюсь войти на связанный веб-сайт . Это выглядит просто, и я сделал это успешно на других сайтах. Я могу войти вручную. Мой код:

Dim bot As New WebDriver
bot.Start "chrome", "https://mbwebedi.mahle.com"
bot.Get "/webedi/jsp/index.jsp"
bot.FindElementByName("Login").SendKeys "ABC123"

Я получаю сообщение об ошибке:

"NoSuchElementError Element not found for Name=Login"

Текст элемента:

<input class="loginInput" type="text" name="Login" maxlength="30">`

На этом этапе я могу продолжить вручную, поэтому я не думай, что главное - это проблема. Что я делаю не так?

The screen with element inspection open

1 Ответ

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

Чтобы отправить последовательность символов в поле Имя пользователя , так как требуемый элемент находится в пределах <iframe>, поэтому вы должны:

  • Сначала SwitchToFrame.
  • Затем найдите элемент.
  • Вы можете использовать любую из следующих Стратегий поиска :

    • Использование FindElementByCss:

      bot.SwitchToFrame "liefercontent"
      bot.FindElementByCss("input.loginInput[name='Login']").SendKeys "ABC123"
      
    • Использование FindElementByXPath:

      bot.SwitchToFrame "liefercontent"
      bot.FindElementByXPath("//input[@class='loginInput' and @name='Login']").SendKeys "ABC123"
      

Соответствующее обсуждение можно найти в Элемент не существует, хотя он имеет атрибут ID


tl; dr

Способы работы с #document в iframe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...