2017-01-23 5 views
1

enter image description hereTesten eine Nur-Lese-Textbox mit Selen

Ich mag würde testen, ob diese Textbox schreibgeschützt ist (nicht in der Lage/bearbeiten zu geben). Hinweis: Der Wert in der Textbox ist jedes Mal anders.

HTML-Code:

<input type="text" class="form-control" id="system_lan1_mac" value="00:15:8b:00:5f:8e" disabled=""> 

Ich habe versucht, das Textfeld mit dem folgenden Code zu finden:

def test_a(self): 
     ip = self.find_by_id('system_lan2_mac') 
     self.assertFalse(ip.is_enabled()) 

Das funktioniert nicht - ich bin mir bewusst, dass is_enabled() soll nicht auf in diesem Zusammenhang verwendet werden. Beim Suchen nach dem Textfeld tritt ein Zeitüberschreitungsfehler auf. Wenn ich die ID zu einer normalen Textbox ändere, kann der Test sie finden. Sobald ich es in eine schreibgeschützte ID ändere, gibt es einen Timeout-Fehler.

Dank

EDIT: find_by_id Code:

def find_by_id(self, setting): 
    element = self.wait.until(EC.element_to_be_clickable((By.ID, setting))) 
    return element 

WebDriverWait Definition:

cls.wait = WebDriverWait(cls.driver, 10) 
+0

Ihr Selektor verwendet 'id =" system_lan2_mac "' während in bereitgestellten 'HTML' ist es' id = "system_lan1_mac" '...' is_enabled() 'könnte in diesem Zusammenhang verwendet werden – Andersson

+0

Hi. Entschuldigung - es gibt auch eine system_lan2_mac und der Code funktioniert nicht für diese Box. – Sithling

+0

Verwenden Sie 'WebdriverWait' +' ExpectedConditions' in Ihrer 'self.find_by_id()'? Wenn ja, zeigen Sie uns diesen Code – Andersson

Antwort

3

Das Problem ist in Ihrem erwarteten Zustand: Sie warten, bis das deaktivierte Eingabefeld klickbar wird ... Dies wird in keinem Fall True sein. Sie sollten versuchen, Ihre self.find_by_id() wie unten definiert werden:

def find_by_id(self, setting): 
    element = self.wait.until(EC.presence_of_element_located((By.ID, setting))) 
    return element 
+0

Ja, das war's - vielen Dank! – Sithling

0

Sie könnten versuchen, einen Test zu schreiben, die Sendkeys() verwendet, und che ck, dass das Wertattribut des Textfelds nicht geändert worden ist.

+0

Danke für die Antwort. Ich habe es ausprobiert - das Problem ist, dass ich die Textbox nicht finden kann, also kann ich sowieso keine Schlüssel dazu schicken – Sithling

+0

Haben Sie versucht, es durch XPath zu finden? – Kenyanke

0

sollten Sie überprüfen, für disabled Attribut, es ist ein boolean-Attribut. Wenn es vorhanden ist, sollte Ihr <input> Feld deaktiviert sein.

Wie @Andersson sagte, wäre eine Möglichkeit, es in Python zu überprüfen.

+0

Dies funktioniert nicht, weil 1. Im aktuellen Fall gibt es keine "Klasse", die "deaktiviert" enthält, sondern stattdessen ein "deaktiviertes" Attribut. 2. Diese Syntax wird von 'Python' nicht unterstützt ... Allerdings könnte Ihr Punkt als 'assert element.get_attribute (' disabled ')' – Andersson

+0

Tnx, Sie haben Recht, ich habe diesen Code ohne auf der Suche nach meinem Fall, wo Behinderte tatsächlich eine der Klassen war, mein Fehler. – acikojevic