Вход в Selenium на всплывающей веб-странице без html - PullRequest
0 голосов
/ 02 марта 2020

В моей программе Selenium я использую драйвер google-chrome для доступа и входа в свою учетную запись на этой веб-странице . Проблема в том, что веб-страница входа - это программа с всплывающим окном и без кода HMTL, который я могу получить. Поэтому я не знаю, как ввести свои учетные данные. Я посмотрел вокруг и увидел несколько предложений с «действиями», такими как

actions = ActionChains(driver)
actions.send_keys('skdkds')
actions.perform()

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

Любая помощь будет принята с благодарностью. Большое спасибо

За воспроизводимый пример:

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager
import pandas as pd
import datetime
import time
import glob
import os

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get(link_mentionned_above) //then I am blocked 

Обновлено

Как упомянуто Azy_Crw4282, проблема здесь заключается в обработке предупреждений, однако водитель не распознает никаких предупреждений, потому что для driver.switch_to_alert() я получаю ошибку:

  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/common/alert.py", line 67, in text
    return self.driver.execute(Command.W3C_GET_ALERT_TEXT)["value"]
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoAlertPresentException: Message: no such alert

1 Ответ

0 голосов
/ 03 марта 2020

Ваш код ниже неверен, так как он не обрабатывает оповещение подсказки явно.

actions = ActionChains(driver)
actions.send_keys('skdkds')
actions.perform()

Измените его следующим образом

actions.switchTo().alert().sendKeys("Username");
actions.switchTo().alert().sendKeys("Password");
...