Mechanize und externe frames

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Waterloan
User
Beiträge: 1
Registriert: Dienstag 11. November 2014, 08:49

Joa, habe bisher mit Selenium Webdriver & PhantomJS gearbeitet, habe aber jetzt angefangen das ganze performance bedingt mit mechanize nachzubilden.
Das ganze klappt auch wunderbar, bis auf einen einzigen kleinen Part.

Der Code für Selenium den ich verwende wäre dieser:

Code: Alles auswählen

driver.switch_to.frame(driver.find_element_by_tag_name("iframe"))
driver.find_element_by_id("res_response").send_keys("1080")
driver.find_element_by_css_selector('input[type=submit]').submit()
driver.switch_to.default_content()
'

Code: Alles auswählen

<noscript>
    <iframe src="www.a-random-url-appears.com" height="300" width="500" frameborder="0"></iframe><br/>
    <textarea name="res_challenge" rows="3" cols="40"></textarea>
    <input type="hidden" name="res_response" value="manual_challenge"/>
</noscript>
Der "wichtige" Code vom Frame

Code: Alles auswählen

    <td id="res-response-cell"><input type=text name="res_response" id="res_response" autocomplete="off">
    <td colspan=2><input type=submit value="Check"></td>

Die Aktion im Frame ist einen Text einzugeben und den Check Button zu drücken, also sollte ja ein simpler POST Request ausreichen.

Code: Alles auswählen

br.open('http://www.xxx.com/res.php')
res_url = re.findall('xxxxx', br.read())

# doesn't work with standard open either, "closeable_response instance has no attribute 'select_form'"
res_frame = br.open_novisit(res_url)
res_frame.select_form(nr=0)
res_frame['res_response'] = '1080'
res_frame.submit()

br['setting'] = 'cinematic'
br.submit()
Ich brauche ja diesselbe Instanz des Browsers, d.h. ich kann nicht dem Link folgen und danach zurück gehen, sind also mindestens 2 Objekte des Browsers gefragt.
Das Selenium Beispiel, das ich ich oben angegeben habe klappt einwandfrei, ich hoffe man kann daraus entnehmen was ich gerne erreichen möchte und wo mein Problem liegt.

Mit freundlichen Grüßen,
Waterloan
Antworten