1

Verwenden Sie das JavaScript-Selenium-Tool namens NightWatch, was ist eine gute Übung, um Teile der GUI zu bestimmen, bevor Sie einen Test anwenden? Zum Beispiel, ob auf A oder B zu finden, dann getrennte Tests haben. Ein anderes Beispiel, festzustellen, ob eingeloggt, so dass Sie nicht anmelden usw. Scheint, wenn ich if Anweisung mit Selektoren verwenden, will es fehlschlagen, wenn ich die Option else bekomme.Sind Auswahloptionen eingebaut, um mit Nightwatchjs komplexe Entscheidungen zu treffen?

Ich habe Python API für eine lange Zeit verwendet, und Sie haben Zugriff auf alle Python-Bibliotheken, können Sie die Selenium Selektoren zu überprüfen, ohne einen Fehler usw. zu ergeben. Ich habe sogar die npm Selen API mit ähnlichen Ergebnissen verwendet Obwohl es immer noch grün ist, wie es funktioniert, kann ich die Ebene von NightWatch jedoch nicht dazu bringen, viel mehr zu tun als einen E2E-Durchlauf oder einen Fehler, egal was ich versuche.

Ich denke, ich würde es da draußen veröffentlichen, damit ich sehen kann, ob ich es einfach falsch mache oder ob das ein häufiges Problem ist. Oder vielleicht gibt es andere Bibliotheken, die entwickelt wurden, um zu helfen, wonach ich suche. Jede Eingabe würde sehr geschätzt werden.

ist hier ein allgemeines Beispiel in Python I A/B-Optionen verwenden kann, um zu überprüfen, dass ...

# so you know what EC is 
from selenium.webdriver.support import expected_conditions as EC 

... 

try: 
    wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#foo'))) 
    driver.find_element_by_css_selector('#blah1 a').click() 
except: 
    driver.find_element_by_css_selector('#blah2 a').click() 

Und eine andere vielleicht sauberen sucht Art und Weise funktioniert es in Python zu tun ...

if len(driver.find_elements_by_css_selector('#blah1 a')) > 0: 
    driver.find_element_by_css_selector('#blah1 a').click() 
else: 
    driver.find_element_by_css_selector('#blah2 a').click() 

Es ist offensichtlich mehr Logik hier erforderlich, da es nicht alle eingebaut hat, die Nightwatch hat, aber dies sollte eine Idee geben, was ich versuche zu tun.

+1

Können Sie ein Beispiel mit dem JS oder Python API bereitstellen zeigt das Verhalten, das Sie mit nightwatchjs nicht in der Lage zu replizieren sind? –

+0

@FlorentB. Ich habe gerade einen sehr generischen try exception hack in Python angeboten, um dies zu erreichen. Das ist im Wesentlichen das Ziel hier, nicht zu sehen, ob Sie auf eines von diesen zugreifen können, sondern zu bestimmen, welche Option für Sie verfügbar ist und es verwenden. Dann von diesem Punkt an Ihre Behauptung machen. – Shane

Antwort

1

Sie können bedingte Anweisungen mit Nightwatch.js verwenden, sie müssen jedoch in den Rückruf eingefügt werden, da die Programmierung asynchron ist. Hier ist ein Beispiel auf einen Link zu klicken und behaupten den Titel in Abhängigkeit von der Anwesenheit eines Elements:

client 
    .url('http://stackoverflow.com/') 
    .elements('css selector', '#abcd', function(result) { 
     if (result.value.length) { // if element is present 
      client.click('#nav-questions'); 
      client.assert.title("Newest Questions - Stack Overflow"); 
     } else { 
      client.click('#nav-askquestion'); 
      client.assert.title("Ask a Question - Stack Overflow"); 
     } 
    }) 
    .end();