2017-09-07 15 views
-1

Ich verwende Test abgeschlossen für die Automatisierung. Ich schaffe Klasse: "Common" mit Code:Test abgeschlossen: ReferenceError Driver1 ist nicht definiert

function Read_Excel_Login(){ 
    var Driver1 = DDT.ExcelDriver("C:/Users/NVA/Downloads/leave.xls","login",true); 
} 

function Login() 
{ 
    if(Driver1.Value(3)==2) 
    { 
     page = Aliases.browser.pageHrmtestSpsSymfonyWebIndexPhp2; 
     page.Wait(5000); 
    } 
    else 
    { 
     page= Aliases.browser.pageHrmtestSpsSymfonyWebIndexPhp; 
     page.Wait(5000); 
    } 

    page.contentDocument.Script.$("#txtUsername").val(Driver1.Value(0)).change(); 
    page.contentDocument.Script.$("#txtPassword").val(Driver1.Value(1)).change(); 
    page.contentDocument.Script.$("#btnLogin").click(); 
} 

ich andere Klasse erstellen: "Main" für die Anmeldung Benutzer und rufen Klasse: "common" mit Code:

var Common = require("Common"); 

function Main() 
{ 
    Common.Read_Excel_Login(); 
    while(!Driver1.EOF()) 
    { 
     Common.Login(); 
     Driver1.Next();      
    } 
} 

Fehler angezeigt, nachdem Lauf:

Reference

Driver1 nicht

definiert

Wie behebt man dieses Problem? Vielen Dank.

+0

Verschieben Sie die 'page.Wait (5000);' aus dem 'if-then', da es so oder so passiert. – JeffC

Antwort

0

Wenn Sie am Anfang Ihres Codes einen Haltepunkt setzen und ihn durchgehen, kann dies möglicherweise helfen, das Problem zu finden.

Das Problem ist, dass Sie Driver1 in der Funktion Read_Excel_Login() und dann diese Funktion geht out of scope deklariert haben und Sie verweisen Driver1 in der Funktion Login(), wo es nicht definiert ist.

Ich würde Driver1 in Main() definieren und dann Read_Excel_Login() eine Treiberinstanz zurückgeben. Dann können Sie Driver1 an Login() übergeben, wo es verwendet werden kann.

function Read_Excel_Login() 
{ 
    return DDT.ExcelDriver("C:/Users/NVA/Downloads/leave.xls", "login", true); 
} 

function Main() 
{ 
    var ExcelDriver = Common.Read_Excel_Login(); 
    while(!ExcelDriver.EOF()) 
    { 
     Common.Login(ExcelDriver); 
     ExcelDriver.Next(); 
    } 
} 

function Login(ExcelDriver) { ... } 

Ich habe auch den Namen des Fahrers präziser, von Driver1ExcelDriver anstatt zu sein.

Es ist eine lange Zeit her, seit ich etwas mit TestComplete getan habe, also denke ich, dass diese Syntax größtenteils korrekt ist.

+0

Ich kann erfolgreich mit Ihrem Vorschlag laufen. Danke! –

+0

Wenn diese (oder irgendeine) Antwort Ihnen geholfen hat, bitte upvote es. Wenn es deine Frage beantwortet hat, akzeptiere es bitte als die Antwort. – JeffC

Verwandte Themen