2016-05-05 5 views
-1

Ich habe eine Webseite, auf der der Benutzer eine Liste von Dokumenten hochladen muss und erst danach die Schaltfläche "Senden" aktiviert wird.Selenium-Python-Wie übermittelst du die Schaltfläche nur, nachdem sie aktiviert wurde?

Ich benutze Python Selen für diese Automatisierung. Mein Programm kann die Dokumente hochladen, kann aber nicht auf die Schaltfläche Senden klicken, nachdem es aktiviert wurde.

Ich habe versucht, dieses: element = WebDriverWait (Fahrer, 10000) .bis (EC.element_to_be_clickable ("(// Taste [@ type = 'submit'] [2]")) element.click()

aber es funktioniert nicht, da die Arbeitsplätze sind nicht im Frontend vorgelegt

+0

Ist Ihnen klar, dass 'WebDriverWait (driver, 10000)' Ihr Skript zwingt auf "Submit" zu klicken, um für ungefähr 3 Stunden klickbar zu sein? :) – Andersson

+0

Auch die mitgelieferte Codezeile ist falsch, so dass es sowieso nicht funktioniert – Andersson

+0

Danke yeah. Aber ich weiß nicht, warum es den Job nicht macht. Ich habe es versucht: self = driver.find_element_by_xpath ("(// button [@ type = 'submit'] [2]") if self.is_enabled(): self.click() es funktioniert nicht either – Rahul

Antwort

1

Code ändern sein:

element = WebDriverWait(driver, 100).until(
     EC.element_to_be_clickable((By.XPATH, "//input[contains(@ng-click,'SubmitJob')]"))) 
element.click() 

so, jetzt sind wir für bis zu 100 Sekunden warten (anstelle von 3 Stunden), und wir übergeben ein Tupel - Argument (By.XPATH, "//input[contains(@ng-click,'SubmitJob')]") an EC.element_to_be_clickable, was es erwartet.

Ich kann zwar die Korrektheit des XPath nicht kommentieren, aber bitte überprüfen Sie es auch.

Bearbeiten: den xpath basierend auf Kommentar geändert. Es gibt viele Möglichkeiten, diesen XPath auszudrücken. Ich würde ng-click über class Attribut bevorzugen, da Klassen ändern können; Aktion wird jedoch wahrscheinlich gleich bleiben. Aber wenn Sie mit Klassen wählen, schlage ich vor, noch mit etwas los wie

//input[contains(@class,'btn') and contains(@class,'form-control')] 

, weil man nie wissen, ob die Reihenfolge der Klassen ändern.

+0

Danke. Dies ist der HTML-Code für die Schaltfläche: \t Rahul

+0

Ich habe die Antwort basierend auf Ihrem Kommentar bearbeitet –

+0

Danke! Es funktioniert jetzt !!! – Rahul

Verwandte Themen