2017-07-09 2 views
0

Ich habe ein Problem bei der Automatisierung meines Browsers mit Selenium auf Python. Es ist mehrere Stunden, dass ich blockiere, und da ich ein Anfänger bin .. :(Frame Switch zum Klicken auf eine Box (Python Selen)

Ich erkläre mein Problem: Ich muss erreichen, klicken Sie auf eine Box von Recaptcha. Um dies zu tun, muss mein Bot auf eine klicken . Taste auf der Website, die dann die recaptcha anzeigt, die ich bestätigen müssen Hier sind die Quellseite Screenshot:

The popup of the recaptcha, in which the checkbox is located

The location of the checkbox that I have to click

ich versuche, diesen Code:

time.sleep(5) 
browser.switch_to_frame(browser.find_element_by_tag_name("CaptchaPopup")) 
browser.switch_to_frame(browser.find_element_by_tag_name("iframe")) 
CheckBox = WebDriverWait(browser, 10).until(
     browser.find_element_by_id('recaptcha-anchor').click()) 


time.sleep(0.7) 
CheckBox.click() 

Aber die letztere kehrt mir einen Fehler :(

selenium.common.exceptions.NoSuchFrameException: Message: no such frame 

Ich verwende Python 2.7. Haben Sie eine Lösung? Vielen Dank im Voraus!

+0

Haben Sie Ausnahme auf 'browser.switch_to_frame (browser.find_element_by_tag_name ("CaptchaPopup"))' oder 'browser.switch_to_frame (Browser erhalten. find_element_by_tag_name ("iframe")) '? – Andersson

+0

Für browser.switch_to_frame (browser.find_element_by_tag_name ("Ca ptchaPopup")) ich weiß:/http://prntscr.com/fth7vq –

+0

Sind Sie sicher, dass es einen 'iframe' mit solchen' name' gibt? Ich sehe kein solches Attribut auf dem bereitgestellten Stück 'HTML' – Andersson

Antwort

0

Versuchen unter Code zu verwenden, erforderlich Check-Box zu handhaben:

from selenium.webdriver.support.ui import WebDriverWait as wait 
from selenium.webdriver.support import expected_conditions as EC 

wait(browser, 10).until(EC.frame_to_be_available_and_switch_to_it(browser.find_element_by_xpath('//iframe[contains(@src, "google.com/recaptcha")]'))) 
wait(browser, 10).until(EC.element_to_be_clickable((By.ID, 'recaptcha-anchor'))).click() 
+0

Oh .. Alles funktioniert perfekt! Danke, es ist so lange her, dass ich nach einer Lösung suche ... Danke! Ich werde Ihren Code weiter studieren, aber ich verstehe, was jetzt falsch war –

Verwandte Themen