Prüfe ob das Element existiert - selen / javascript / node-js

7

Ich versuche zu prüfen, ob ein Element existiert, bevor ich diese Zeile ausführen kann:

driver.findElement(webdriver.By.id('test'));

Dies führt zu einem Fehler "kein solches Element", wenn die ID test nicht im Dokument vorhanden ist, auch nicht in einem try -Block. Ich habe Antworten für Java gefunden, wo Sie überprüfen können, ob die Größe 0 ist, aber in Node-Js löst dies einen Fehler aus, bevor ich die Größe überprüfen kann.

throw error; ^ NoSuchElementError: no such element

    
F. Rakes 22.11.2013, 15:45
quelle

4 Antworten

24

Sie können das optionale Fehlerbehandlungsargument von then() verwenden.

%Vor%

Ich konnte es in der Dokumentation nicht explizit finden, sondern habe dies aus der Funktionsdefinition in webdriver/promise.js in der Modulquelle selenium-webdriver ermittelt:

%Vor%     
Zugwalt 07.01.2014, 17:25
quelle
2

Warum nicht einfach die Methode isElementPresent (locatorOrElement) verwenden? Hier ist ein Link zum Code:

Ссылка

    
Tomasz Wszelaki 09.05.2014 06:47
quelle
1

Die ausgewählte Antwort funktionierte nicht wie erwartet ( err.state war undefined und NoSuchElementError wurde immer geworfen) - obwohl das Konzept der Verwendung der optionalen Callbacks immer noch funktioniert.

Da ich den gleichen Fehler bekommen habe, wie das OP referenziert, glaube ich, NoSuchElementError sollte referenziert werden, wenn festgestellt wird, ob das Zielelement existiert oder nicht. Wie es der Name impliziert, ist der Fehler, der ausgelöst wird, wenn ein Element nicht existiert. Die Bedingung im errorCallback sollte also lauten:

err instanceof webdriver.error.NoSuchElementError

Also wäre der komplette Codeblock wie folgt (Ich verwende auch async / await für diejenigen, die diese Syntax ausnutzen):

%Vor%     
Arthur Weborg 24.07.2017 05:22
quelle
-2

Klingt so, als ob Sie zunächst prüfen möchten, ob Ihre Eigenschaften existieren:

%Vor%     
Mike 'Pomax' Kamermans 22.11.2013 18:32
quelle

Tags und Links