Я взял ваш код, упростил структуру и провел тест с минимальными строками кода следующим образом:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_argument("--disable-extensions")
driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get("https://secure07c.chase.com/web/auth/#/logon/logon/chaseOnline?")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.jpui.input.logon-xs-toggle.clientSideError"))).send_keys("jsmiao")
driver.find_element_by_css_selector("input.jpui.input.logon-xs-toggle#password-input-field").send_keys("hello")
driver.find_element_by_css_selector("button#signin-button>span.label").click()
Аналогично, согласно вашим наблюдениям, я столкнулся с тем же препятствием с ошибкой:
Кажется, click()
для элемента с текстом как Вход в систему действительно происходит.Хотя поиск username / password инициируется, но процесс прерывается.При проверке дерева DOM веб-страницы вы обнаружите, что некоторые теги <script>
относятся к JavaScripts , имеющим ключевое слово dist .Как пример:
<script src="https://static.chasecdn.com/web/library/blue-boot/dist/2.20.3/blue-boot/js/main-ver.js"></script>
<script type="text/javascript" charset="utf-8" async="" data-requirecontext="_" data-requiremodule="blue-vendor/main" src="https://static.chasecdn.com/web/library/blue-vendor/dist/2.11.1/blue-vendor/js/main.js"></script>
<script type="text/javascript" charset="utf-8" async="" data-requirecontext="_" data-requiremodule="blue/main" src="https://static.chasecdn.com/web/library/blue-core/dist/2.16.3/blue/js/main.js"></script>
<script type="text/javascript" charset="utf-8" async="" data-requirecontext="_" data-requiremodule="blue-app/main" src="https://static.chasecdn.com/web/library/blue-app/dist/2.15.1/blue-app/js/main.js"></script>
Что является четким свидетельством того, что веб-сайт защищен Bot Management поставщиком услуг Distil Networks и обнаруживается навигация по ChromeDriver и впоследствии заблокировано .
Distil
Согласно статье Что-то действительно есть в Distil.it ... :
Distil защищает сайты от автоматических ботов по сбору контента, наблюдая за поведением сайтов и выявляя закономерности, свойственные скребкам.Когда Distil идентифицирует вредоносного бота на одном сайте, он создает черный профиль поведения, который развертывается для всех его клиентов.Что-то вроде брандмауэра бота, Distil обнаруживает шаблоны и реагирует.
Далее,
"One pattern with **Selenium** was automating the theft of Web content"
, сказал генеральный директор Distil Рами Эссейд в интервью на прошлой неделе."Even though they can create new bots, we figured out a way to identify Selenium the a tool they're using, so we're blocking Selenium no matter how many times they iterate on that bot. We're doing that now with Python and a lot of different technologies. Once we see a pattern emerge from one type of bot, then we work to reverse engineer the technology they use and identify it as malicious".
Ссылка
Вы можете найти несколько подробных обсуждений в: