2017-04-02 3 views
0

Ich habe dieses Terminsystem, wo ich warten muss, bis der Link verfügbar ist. Wenn dieser Link verfügbar ist, dann klicken Sie darauf. Wenn nicht zurück und vorwärts (weil die Seite mich nicht neu laden lässt). Und überprüfe es noch einmal, bis es verfügbar ist.wenn sonst Schleife auf Python. Überprüfung eines Klassennamens mit Selenium

while True: 

    if driver.find_element_by_class_name("linkButton"): 

      #do somthing 



    else: 

      driver.back() 
      driver.forward() 
      #check again. 

Das Programm keinen Fehler werfen, aber wenn ich die if zwingen false die else nur tun, nichts zu sein.

ich es nicht mit dem Link überprüfen können, die auf der Seite nicht verfügbar, da ist bis zur Verfügung, das ist, warum ich die if zwingen false

Antwort

0

Zu allererst werden die find_element_*() Methoden nicht zurück true/false, sie geben entweder eine WebElement -Instanz zurück (was truthy ist) oder werfen eine NoSuchElementException-Ausnahme (oder eine andere Ausnahme).

Die Existenzprüfung in der Regel über find_elements_*() Methoden erfolgt, die, wenn ein Element nicht gefunden wird, eine leere Liste zurückkommen würde, die falsy ist:

while True: 
    if driver.find_elements_by_class_name("linkButton"): 
     # do something 
    else: 
     driver.refresh() 

Bitte beachte, dass ich glaube, Sie die Seite nur gemeint refresh() anstatt vor- und zurückzugehen.

Und Sie sollten auch einige Zeitverzögerungen zwischen den Versuchen hinzufügen.

+0

Ja .. aber ich kann Selen nicht machen, um das Element zu finden .. Ich habe versucht mit Xpath 'driver.find_elements_by_xpath (" .//[@ id = 'ctl00_ContentPlaceHolder1_acc_Calendario1_myCalendario1']/table/tbody/tr [6]/td [ 1]/Eingabe ")" – TOMAS

Verwandte Themen