2016-06-11 7 views
2

Ich verwende Selenium, um einen Prozess zu automatisieren, und die Seite, mit der ich interagieren möchte, öffnet jedes Mal einen modalen Dialog, wenn jemand darauf zugreift. Ich möchte in der Lage sein, mit der Hauptseite richtig zu interagieren, also brauche ich eine Möglichkeit, den Dialog zu schließen. Ich habe jedoch einige Vorschläge zum Umgang mit modalen Dialogen ausprobiert und sie funktionieren nicht so wie sie sollten. Es gibt zwei Tasten I klicken kann, um den Dialog zu schließen, ist einer von ihnen:Umgang mit Modal-Dialogen mit Selen in Python

<div class="modal-footer"> 
    <button type="button" class="btn btn-primary" data-dismiss="modal">Fechar</button> 
    </div> 

Ich habe versucht, auf diese Schaltfläche zu lokalisieren und dann klicken Sie mit:

test = driver.find_element_by_link_text("Fechar") 
test.click() 

Aber das ist Schließen des Dialogs nicht. Mit:

test = driver.find_element_by_link_text("Fechar") 
test.send_keys(Keys.RETURN) 

gibt mir die folgende Fehlermeldung:

no such element: Unable to locate element: {"method":"link text","selector":"Fechar"}. 

Ich habe auch gedacht, ein Skript zu schreiben über den Dialog mit der TAB-Taste navigieren und dann Enter drücken, wenn die Schaltfläche zum Schließen erreicht ist . Aber ich weiß nicht, ob dies der richtige Weg ist, um das Problem zu behandeln und ob dies ohne Probleme getan werden kann. Danke im Voraus.

Antwort

2

Mit der Methode find_element_by_link_text finden Sie keine Schaltfläche, Sie finden ein Verknüpfungselement (a). Reference.

Wenn Sie diese Taste erhalten möchten, können Sie verwenden:

driver.find_element_by_css_selector('.modal-footer > button[data-dismiss="modal"]')