Установите флажок, используя селен в Python - PullRequest
0 голосов
/ 17 октября 2019

Я хочу установить флажок, используя селен в Python. Ниже приведен HTML-код флажка. Элемент span подсвечивается при наведении курсора мыши на флажок

HTML

<div id="rc-anchor-container" class="rc-anchor rc-anchor-normal rc-anchor-light">
    <div id="recaptcha-accessible-status" class="rc-anchor-aria-status" aria-hidden="true">Recaptcha requires verification. </div>
    <div class="rc-anchor-error-msg-container" style="display:none"><span class="rc-anchor-error-msg" aria-hidden="true"></span></div>
    <div class="rc-anchor-content">
        <div class="rc-inline-block">
            <div class="rc-anchor-center-container">
                <div class="rc-anchor-center-item rc-anchor-checkbox-holder"><span class="recaptcha-checkbox goog-inline-block recaptcha-checkbox-unchecked rc-anchor-checkbox" role="checkbox" aria-checked="false" id="recaptcha-anchor" tabindex="0" dir="ltr" aria-labelledby="recaptcha-anchor-label"><div class="recaptcha-checkbox-border" role="presentation"></div><div class="recaptcha-checkbox-borderAnimation" role="presentation"></div><div class="recaptcha-checkbox-spinner" role="presentation"></div><div class="recaptcha-checkbox-spinnerAnimation" role="presentation"></div><div class="recaptcha-checkbox-checkmark" role="presentation"></div></span></div>
            </div>
        </div>
        <div class="rc-inline-block">
            <div class="rc-anchor-center-container">
                <label class="rc-anchor-center-item rc-anchor-checkbox-label" aria-hidden="true" role="presentation" id="recaptcha-anchor-label"><span aria-live="polite" aria-labelledby="recaptcha-accessible-status"></span>I'm not a robot</label>
            </div>
        </div>
    </div>
    <div class="rc-anchor-normal-footer">
        <div class="rc-anchor-logo-portrait" aria-hidden="true" role="presentation">
            <div class="rc-anchor-logo-img rc-anchor-logo-img-portrait"></div>
            <div class="rc-anchor-logo-text">reCAPTCHA</div>
        </div>
        <div class="rc-anchor-pt"><a href="https://www.google.com/intl/en/policies/privacy/" target="_blank">Privacy</a><span aria-hidden="true" role="presentation"> - </span><a href="https://www.google.com/intl/en/policies/terms/" target="_blank">Terms</a></div>
    </div>
</div>

Я пытаюсь следующий код, но он дает следующее исключение selenium.common.exceptions.NoSuchElementException

MyКод

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

chromedriver = 'C:\Program Files (x86)\Google\Chrome\chromedriver'
browser = webdriver.Chrome(chromedriver)
browser.get(url)

checkBox = browser.find_element_by_id("recaptcha-anchor")
checkBox.click()

1 Ответ

1 голос
/ 18 октября 2019

Это повторение вещей ... это не похоже на обычные элементы на странице

вы должны перемещаться с селеном к кадру капчи .. тогда вы можете иметь дело с элементом флажка ..

, чтобы сделать это, вам нужно сначала сохранить дескриптор главного окна, чтобы вернуться к нему, когда вы закончите с recaptcha

# save the main window handle
mainwindow = browser.current_window_handle

# get the recapthca iframe then navigate to it
frame = browser.find_element_by_tag_name("iframe")  
browser.switch_to.frame(frame)

# now you can access the checkbox element 
browser.find_element_by_id("recaptcha-anchor").click()

# navigate back to main window
browser.switch_to.window(mainwindow)

для получения дополнительной информации о том, как справиться с вызовом recaptcha, проверьте это ссылка

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