@mollya

Почему selenium не видит элеманта captcha?

6671bb44050f1960297955.png
проблема в том, что элемент есть, но его тупо не видит selenium, а должен нажимать на кнопку в каптче

код:
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from fake_useragent import UserAgent
from selenium.webdriver.chrome.service import Service


option = webdriver.ChromeOptions()
ua = UserAgent()
option.add_argument(f'user-agent={ua.random}')

option.add_argument("--disable-infobars")
option.add_experimental_option("excludeSwitches", ["enable-automation"])
option.add_experimental_option('useAutomationExtension', False)

s = Service(executable_path="C:\Python Scripts\валид\Steam Number\chromedriver.exe")

driver = webdriver.Chrome(options=option,service=s)
driver.maximize_window()
driver.get('https://help.steampowered.com/en/wizard/HelpWithLoginInfo?issueid=406')
driver.implicitly_wait(5)
driver.find_element(By.XPATH,'/html/body/div[2]/div[3]/div[1]/div/div/span/div[1]').click()
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега Python
Python, JS, WordPress, SEO, Bots, Adversting
Капча расположена в iframe, это другой контекст, на который вначале необходимо переключиться, выполнить действия внутри этого контекста, затем переключиться (вернуться) на дефолтный контекст:
import time
from fake_useragent import UserAgent
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

option = webdriver.ChromeOptions()
ua = UserAgent()
option.add_argument(f'user-agent={ua.random}')
option.add_argument("--disable-infobars")

s = Service(executable_path=r"C:\Python Scripts\валид\Steam Number\chromedriver.exe")

driver = webdriver.Chrome(options=option, service=s)
driver.maximize_window()
driver.get('https://help.steampowered.com/en/wizard/HelpWithLoginInfo?issueid=406')

# iframe
iframe = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, '/html/body/div[1]/div[7]/div[2]/div[2]/div/div[2]/div[1]/div[3]/form/div[3]/div[1]/div/div/div/iframe'))
)

# switch to iframe context
driver.switch_to.frame(iframe)

element_to_click = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, '/html/body/div[2]/div[3]'))
)

element_to_click.click()

# switch to default context
driver.switch_to.default_content()

time.sleep(10)
driver.quit()

6672812eb9ca8801428501.png

66728135eeb06375772906.png
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 250 000 ₽
Гринатом Москва
от 150 000 ₽
DIGITAL SECTOR Краснодар
от 150 000 до 250 000 ₽
27 июн. 2024, в 10:20
1000 руб./за проект
27 июн. 2024, в 09:54
3000 руб./за проект