Не нажимается кнопка на сайте python selenium
Хочу парсить появляющиеся слоты для подачи заявки на визу на этом сайте
Мой код проходит авторизацию и рекапчу, а после попадает на страницу такого вида:
Задача: Нажать на кнопку "Записаться на приём", чтобы пройти дальше.
Я пробовал скроллить страницу, наводил курсор, проверял находит ли её вообще selenium, кликал через паузу, но она не поддалась.
Вот весь код, метод для нажатия кнопки называется _choose_visa
import undetected_chromedriver
from fake_useragent import UserAgent
from selenium.webdriver.common.keys import Keys
from selenium_recaptcha_solver import RecaptchaSolver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver import ActionChains
import time
from auth_data import password, login
class SlotBot:
def __init__(self):
self.options = undetected_chromedriver.ChromeOptions()
self.user = UserAgent()
self.options.add_argument(f'user-agent={self.user.random}')
self.options.add_argument(f'--proxy-server=46.8.248.30:9267')
self.driver = undetected_chromedriver.Chrome(
driver_executable_path=r'C:\Users\Flusion\PycharmProjects\Parser\chromebrowser',
options=self.options
)
def _get_url(self):
self.driver.get('https://visa.vfsglobal.com/rus/ru/fra/login')
def _solve_captcha(self):
WebDriverWait(self.driver, 20).until(EC.presence_of_element_located((By.XPATH, '//iframe[@title="reCAPTCHA"]')))
recaptcha_iframe = self.driver.find_element(By.XPATH, '//iframe[@title="reCAPTCHA"]')
solver = RecaptchaSolver(driver=self.driver)
solver.click_recaptcha_v2(iframe=recaptcha_iframe)
def _insert_data(self):
email_input = self.driver.find_element(By.ID, "mat-input-0")
email_input.clear()
email_input.send_keys(login)
time.sleep(2)
password_input = self.driver.find_element(By.ID, "mat-input-1")
password_input.clear()
password_input.send_keys(password)
time.sleep(1)
password_input.send_keys(Keys.ENTER)
def _choose_visa(self) -> None:
next_btn = self.driver.find_element(By.XPATH,
'//button[@class="mat-focus-indicator btn mat-btn-lg btn-block btn-brand-orange mat-raised-button mat-button-base"]')
self.driver.execute_script("arguments[0].scrollIntoView(true);", next_btn)
ActionChains(self.driver).move_to_element(next_btn).click(next_btn).perform()
def check(self):
self._get_url()
time.sleep(2)
self.driver.fullscreen_window()
original_window = self.driver.current_window_handle
assert len(self.driver.window_handles) == 1
time.sleep(15)
self._solve_captcha()
time.sleep(2)
self._insert_data()
time.sleep(15)
for window_handle in self.driver.window_handles:
if window_handle != original_window:
self.driver.switch_to.window(window_handle)
break
WebDriverWait(self.driver, 20).until(EC.title_is("SeleniumHQ Browser Automation"))
self._choose_visa()
if __name__ == '__main__':
try:
SlotBot().check()
time.sleep(500)
except Exception as error:
print(error)
Код страницы с кнопкой
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="color-scheme" content="light dark">
</head>
<body>
<div class="line-gutter-backdrop"></div>
<form autocomplete="off"><label class="line-wrap-control">Переносить строки<input type="checkbox"
aria-label="Переносить строки"></label></form>
<table class="line-wrap">
<tbody>
<tr>
<td class="line-number" value="1"></td>
<td class="line-content"><span class="html-doctype"><!doctypehtml></span><span
class="html-tag"><html <span class="html-attribute-name">lang</span>="<span
class="html-attribute-value">en</span>"></span><span class="html-tag"><link <span
class="html-attribute-name">rel</span>="<span
class="html-attribute-value">preconnect</span>" <span
class="html-attribute-name">href</span>="<a class="html-attribute-value html-resource-link"
target="_blank" href="https://fonts.gstatic.com/"
rel="noreferrer noopener">https://fonts.gstatic.com</a>" <span
class="html-attribute-name">crossorigin</span>=""></span><span class="html-tag"><meta
<span class="html-attribute-name">charset</span>="<span
class="html-attribute-value">utf-8</span>"></span><span class="html-tag"><meta <span
class="html-attribute-name">http-equiv</span>="<span
class="html-attribute-value">X-UA-Compatible</span>" <span
class="html-attribute-name">content</span>="<span
class="html-attribute-value">IE=edge</span>"></span><span
class="html-tag"><title></span><span class="html-tag"></title></span><span
class="html-tag"><base <span class="html-attribute-name">href</span><!--<base href="/">-->
<base href=".">="<a class="html-attribute-value html-resource-link" target="_blank"
href="https://visa.vfsglobal.com/" rel="noreferrer noopener">/</a>">
</span><span class="html-tag"><meta <span class="html-attribute-name">name</span>="<span
class="html-attribute-value">description</span>" <span
class="html-attribute-name">content</span>="<span class="html-attribute-value">VFS
Global</span>"></span><span class="html-tag"><meta <span
class="html-attribute-name">name</span>="<span class="html-attribute-value">keywords</span>"
<span class="html-attribute-name">content</span>="<span class="html-attribute-value">Travel,
Tourism</span>"></span><span class="html-tag"><meta <span
class="html-attribute-name">name</span>="<span class="html-attribute-value">author</span>"
<span class="html-attribute-name">content</span>="<span class="html-attribute-value">VFS
Global</span>"></span><span class="html-tag"><meta <span
class="html-attribute-name">http-equiv</span>="<span
class="html-attribute-value">Cache-Control</span>" <span
class="html-attribute-name">content</span>="<span class="html-attribute-value">no-cache,
no-store, must-revalidate</span>"></span><span class="html-tag"><meta <span
class="html-attribute-name">http-equiv</span>="<span
class="html-attribute-value">Pragma</span>" <span
class="html-attribute-name">content</span>="<span
class="html-attribute-value">no-cache</span>"></span><span class="html-tag"><meta
<span class="html-attribute-name">http-equiv</span>="<span
class="html-attribute-value">Expires</span>" <span
class="html-attribute-name">content</span>="<span
class="html-attribute-value">0</span>"></span><span class="html-tag"><meta <span
class="html-attribute-name">name</span>="<span class="html-attribute-value">viewport</span>"
<span class="html-attribute-name">content</span>="<span
class="html-attribute-value">width=device-width,initial-scale=1</span>"></span><span
class="html-tag"><meta <span class="html-attribute-name">name</span>="<span
class="html-attribute-value">theme-color</span>" <span
class="html-attribute-name">content</span>="<span
class="html-attribute-value">#142f5d</span>"></span><span class="html-tag"><link <span
class="html-attribute-name">rel</span>="<span
class="html-attribute-value">apple-touch-icon</span>" <span
class="html-attribute-name">href</span>="<a class="html-attribute-value html-resource-link"
target="_blank"
href="https://liftassets.vfsglobal.com/_angular/assets/images/global/vfs.ico"
rel="noreferrer noopener">https://liftassets.vfsglobal.com/_angular/assets/images/global/vfs.ico</a>"></span><span
class="html-tag"><link <span class="html-attribute-name">rel</span>="<span
class="html-attribute-value">icon</span>" <span
class="html-attribute-name">type</span>="<span
class="html-attribute-value">image/x-icon</span>" <span
class="html-attribute-name">sizes</span>="<span class="html-attribute-value">16x16</span>"
<span class="html-attribute-name">href</span>="<a
class="html-attribute-value html-resource-link" target="_blank"
href="https://liftassets.vfsglobal.com/_angular/assets/images/global/vfs.ico"
rel="noreferrer noopener">https://liftassets.vfsglobal.com/_angular/assets/images/global/vfs.ico</a>"></span><span
class="html-tag"><link <span class="html-attribute-name">rel</span>="<span
class="html-attribute-value">stylesheet</span>" <span
class="html-attribute-name">type</span>="<span class="html-attribute-value">text/css</span>"
<span class="html-attribute-name">href</span>="<a
class="html-attribute-value html-resource-link" target="_blank"
href="https://liftassets.vfsglobal.com/_angular/assets/font-awesome-4.7.0/css/font-awesome.min.css"
rel="noreferrer noopener">https://liftassets.vfsglobal.com/_angular/assets/font-awesome-4.7.0/css/font-awesome.min.css</a>"></span><span
class="html-tag"><style <span class="html-attribute-name">type</span>="<span
class="html-attribute-value">text/css</span>"></span>@font-face{font-family:'Material
Icons';font-style:normal;font-weight:400;src:url(https://fonts.gstatic.com/s/materialicons/v140/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2)
format('woff2');}.material-icons{font-family:'Material
Icons';font-weight:normal;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:'liga';-webkit-font-smoothing:antialiased;}<span
class="html-tag"></style></span><span class="html-tag"><meta <span
class="html-attribute-name">name</span>="<span
class="html-attribute-value">theme-color</span>" <span
class="html-attribute-name">content</span>="<span
class="html-attribute-value">#1976d2</span>"></span><span
class="html-tag"><style></span>.loader-box {</td>
</tr>
<tr>
<td class="line-number" value="2"></td>
<td class="line-content"> position: fixed;</td>
</tr>
<tr>
<td class="line-number" value="3"></td>
<td class="line-content"> top: 0;</td>
</tr>
<tr>
<td class="line-number" value="4"></td>
<td class="line-content"> right: 0;</td>
</tr>
<tr>
<td class="line-number" value="5"></td>
<td class="line-content"> bottom: 0;</td>
</tr>
<tr>
<td class="line-number" value="6"></td>
<td class="line-content"> left: 0;</td>
</tr>
<tr>
<td class="line-number" value="7"></td>
<td class="line-content"> background-color: #ebebeb;</td>
</tr>
<tr>
<td class="line-number" value="8"></td>
<td class="line-content"> z-index: 1090;</td>
</tr>
<tr>
<td class="line-number" value="9"></td>
<td class="line-content"> }</td>
</tr>
<tr>
<td class="line-number" value="10"></td>
<td class="line-content"> .loader-box-inner {</td>
</tr>
<tr>
<td class="line-number" value="11"></td>
<td class="line-content"> margin: auto;</td>
</tr>
<tr>
<td class="line-number" value="12"></td>
<td class="line-content"> position: absolute;</td>
</tr>
<tr>
<td class="line-number" value="13"></td>
<td class="line-content"> top: 50%;</td>
</tr>
<tr>
<td class="line-number" value="14"></td>
<td class="line-content"> right: auto;</td>
</tr>
<tr>
<td class="line-number" value="15"></td>
<td class="line-content"> bottom: auto;</td>
</tr>
<tr>
<td class="line-number" value="16"></td>
<td class="line-content"> left: 50%;</td>
</tr>
<tr>
<td class="line-number" value="17"></td>
<td class="line-content"> transform: translate(-50%, -50%);</td>
</tr>
<tr>
<td class="line-number" value="18"></td>
<td class="line-content"> }<span class="html-tag"></style></span><span
class="html-tag"><style></span>:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe
UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color
Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color
Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier
New",monospace}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe
UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,"Apple Color Emoji","Segoe UI
Emoji",Segoe UI Symbol,"Noto Color
Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}img{vertical-align:middle;border-style:none}.d-flex{display:flex!important}.flex-column{flex-direction:column!important}.min-vh-100{min-height:100vh!important}@media
print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}img{page-break-inside:avoid}@page{size:a3}body{min-width:992px!important}}@font-face{font-family:Inter-UI-400;font-style:normal;font-weight:400;src:url(https://liftassets.vfsglobal.com/_angular/assets/styles/css/fonts/Inter-UI-400.woff);font-display:swap}html,body{position:relative;margin:0;padding:0;height:100%!important;background-color:#fff}body{position:relative;font-family:Inter-UI-400;color:#000;font-size:16px;font-weight:400;line-height:1.42857}<span
class="html-tag"></style></span><span class="html-tag"><script <span
class="html-attribute-name">src</span>="<a class="html-attribute-value html-resource-link"
target="_blank"
href="https://visa.vfsglobal.com/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js"
rel="noreferrer noopener">/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js</a>"
<span class="html-attribute-name">data-cf-settings</span>="<span
class="html-attribute-value">aa146143c68b1af3912556b2-|49</span>"></span><span
class="html-tag"></script></span><span class="html-tag"><link <span
class="html-attribute-name">rel</span>="<span
class="html-attribute-value">stylesheet</span>" <span
class="html-attribute-name">href</span>="<a class="html-attribute-value html-resource-link"
target="_blank"
href="https://liftassets.vfsglobal.com/_angular/styles.9d5be13d9aa41911.css?v=6.0.42"
rel="noreferrer noopener">https://liftassets.vfsglobal.com/_angular/styles.9d5be13d9aa41911.css?v=6.0.42</a>"
<span class="html-attribute-name">crossorigin</span>="<span
class="html-attribute-value">anonymous</span>" <span
class="html-attribute-name">media</span>="<span class="html-attribute-value">print</span>"
<span class="html-attribute-name">onload</span>="<span
class="html-attribute-value">this.media='all'</span>"></span><span
class="html-tag"><noscript></span><link
rel="stylesheet"href="https://liftassets.vfsglobal.com/_angular/styles.9d5be13d9aa41911.css"><span
class="html-tag"></noscript></span><span class="html-tag"><div <span
class="html-attribute-name">id</span>="<span class="html-attribute-value">loader</span>"
<span class="html-attribute-name">class</span>="<span
class="html-attribute-value">loader-box</span>"></span><span class="html-tag"><img
<span class="html-attribute-name">class</span>="<span
class="html-attribute-value">loader-box-inner</span>" <span
class="html-attribute-name">src</span>="<a class="html-attribute-value html-resource-link"
target="_blank"
href="https://liftassets.vfsglobal.com/_angular/assets/images/global/loader.gif"
rel="noreferrer noopener">https://liftassets.vfsglobal.com/_angular/assets/images/global/loader.gif</a>"
<span class="html-attribute-name">alt</span>="<span
class="html-attribute-value">loader</span>"></span><span
class="html-tag"></div></span><span class="html-tag"><app-root <span
class="html-attribute-name">class</span>="<span class="html-attribute-value">d-flex
flex-column min-vh-100</span>"></span><span
class="html-tag"></app-root></span><span class="html-tag"><noscript></span>This
website requires JavaScript<span class="html-tag"></noscript></span><span
class="html-tag"><script <span class="html-attribute-name">src</span>="<a
class="html-attribute-value html-resource-link" target="_blank"
href="https://liftassets.vfsglobal.com/_angular/runtime.76ad4eb3267f40e6.js?v=6.0.42"
rel="noreferrer noopener">https://liftassets.vfsglobal.com/_angular/runtime.76ad4eb3267f40e6.js?v=6.0.42</a>"
<span class="html-attribute-name">type</span>="<span
class="html-attribute-value">aa146143c68b1af3912556b2-module</span>" <span
class="html-attribute-name">crossorigin</span>="<span
class="html-attribute-value">anonymous</span>"></span><span
class="html-tag"></script></span><span class="html-tag"><script <span
class="html-attribute-name">src</span>="<a class="html-attribute-value html-resource-link"
target="_blank"
href="https://liftassets.vfsglobal.com/_angular/polyfills.4ea631c48b64b161.js?v=6.0.42"
rel="noreferrer noopener">https://liftassets.vfsglobal.com/_angular/polyfills.4ea631c48b64b161.js?v=6.0.42</a>"
<span class="html-attribute-name">type</span>="<span
class="html-attribute-value">aa146143c68b1af3912556b2-module</span>" <span
class="html-attribute-name">crossorigin</span>="<span
class="html-attribute-value">anonymous</span>"></span><span
class="html-tag"></script></span><span class="html-tag"><script <span
class="html-attribute-name">src</span>="<a class="html-attribute-value html-resource-link"
target="_blank"
href="https://liftassets.vfsglobal.com/_angular/scripts.f2dce36313fd5de6.js?v=6.0.42"
rel="noreferrer noopener">https://liftassets.vfsglobal.com/_angular/scripts.f2dce36313fd5de6.js?v=6.0.42</a>"
<span class="html-attribute-name">defer</span>="<span class="html-attribute-value">defer</span>"
<span class="html-attribute-name">crossorigin</span>="<span
class="html-attribute-value">anonymous</span>" <span
class="html-attribute-name">type</span>="<span
class="html-attribute-value">aa146143c68b1af3912556b2-text/javascript</span>"></span><span
class="html-tag"></script></span><span class="html-tag"><script <span
class="html-attribute-name">src</span>="<a class="html-attribute-value html-resource-link"
target="_blank"
href="https://liftassets.vfsglobal.com/_angular/vendor.922df4b8d3d496cd.js?v=6.0.42"
rel="noreferrer noopener">https://liftassets.vfsglobal.com/_angular/vendor.922df4b8d3d496cd.js?v=6.0.42</a>"
<span class="html-attribute-name">type</span>="<span
class="html-attribute-value">aa146143c68b1af3912556b2-module</span>" <span
class="html-attribute-name">crossorigin</span>="<span
class="html-attribute-value">anonymous</span>"></span><span
class="html-tag"></script></span><span class="html-tag"><script <span
class="html-attribute-name">src</span>="<a class="html-attribute-value html-resource-link"
target="_blank"
href="https://liftassets.vfsglobal.com/_angular/main.5f6c186316e7d580.js?v=6.0.42"
rel="noreferrer noopener">https://liftassets.vfsglobal.com/_angular/main.5f6c186316e7d580.js?v=6.0.42</a>"
<span class="html-attribute-name">type</span>="<span
class="html-attribute-value">aa146143c68b1af3912556b2-module</span>" <span
class="html-attribute-name">crossorigin</span>="<span
class="html-attribute-value">anonymous</span>"></span><span
class="html-tag"></script></span><span class="html-tag"><script <span
class="html-attribute-name">src</span>="<a class="html-attribute-value html-resource-link"
target="_blank"
href="https://visa.vfsglobal.com/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js"
rel="noreferrer noopener">/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js</a>"
<span class="html-attribute-name">data-cf-settings</span>="<span
class="html-attribute-value">aa146143c68b1af3912556b2-|49</span>" <span
class="html-attribute-name">defer</span>=""></span><span
class="html-tag"></script></span><span class="html-end-of-file"></span></td>
</tr>
</tbody>
</table>
</body>
</html>
Источник: Stack Overflow на русском