2017-07-27 5 views
0

Ich bin neu auf Winkelmesser und gehe durch das Tutorial. Das Setup und Schritt 0 funktionierte gut für mich, aber ich hatte einen unerwarteten Fehler in Step 1:Winkelmesser Tutorial Schritt werfen "Element nicht sichtbar"

$ protractor conf.js 
[13:11:41] I/launcher - Running 1 instances of WebDriver 
[13:11:41] I/hosted - Using the selenium server at http://localhost:4444/wd/hub 
Started 
seeking `first` 
seeking `second` 
seeking `gobutton` 
seeking `latest` 
F 

Failures: 
1) Protractor Demo App should add one and two 
    Message: 
    Failed: element not visible 
     (Session info: chrome=60.0.3112.78) 
     (Driver info: chromedriver=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8),platform=Linux 4.4.0-87-generic x86_64) (WARNING: The server did not provide any stacktrace information) 
    Command duration or timeout: 43 milliseconds 
    Build info: version: '3.4.0', revision: 'unknown', time: 'unknown' 
    System info: host: 'pfuntner1', ip: '9.42.83.35', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-87-generic', java.version: '1.8.0' 
    Driver info: org.openqa.selenium.chrome.ChromeDriver 
    Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8), userDataDir=/tmp/.org.chromium.Chromium.ZhadTr}, takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=60.0.3112.78, platform=LINUX, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true, setWindowRect=true, unexpectedAlertBehaviour=}] 
    Session ID: cf611f619dbf2069413885ed9bcbba17 
    Stack: 
    ElementNotVisibleError: element not visible 
     (Session info: chrome=60.0.3112.78) 
     (Driver info: chromedriver=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8),platform=Linux 4.4.0-87-generic x86_64) (WARNING: The server did not provide any stacktrace information) 
    Command duration or timeout: 43 milliseconds 
    Build info: version: '3.4.0', revision: 'unknown', time: 'unknown' 
    System info: host: 'pfuntner1', ip: '9.42.83.35', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-87-generic', java.version: '1.8.0' 
    Driver info: org.openqa.selenium.chrome.ChromeDriver 
    Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8), userDataDir=/tmp/.org.chromium.Chromium.ZhadTr}, takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=60.0.3112.78, platform=LINUX, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true, setWindowRect=true, unexpectedAlertBehaviour=}] 
. 
. 
. 

Ich habe Aussagen Debugging spec.js zu identifizieren, um zu versuchen, welches Element es nicht finden können. Es scheint, die zwei Eingabefelder und die Schaltfläche zu finden, aber das Ausgabefeld nicht finden.

Hier ist meine spec.js:

// spec.js 
describe('Protractor Demo App', function() { 
    it('should add one and two', function() { 
    browser.get('http://juliemr.github.io/protractor-demo/'); 
    console.log("seeking `first`"); 
    element(by.model('first')).sendKeys(1); 
    console.log("seeking `second`"); 
    element(by.model('second')).sendKeys(2); 

    console.log("seeking `gobutton`"); 
    element(by.id('gobutton')).click(); 

    console.log("seeking `latest`"); 
    expect(element(by.binding('latest')).getText()).toEqual('5'); // This is wrong! 
    }); 
}); 

Bin ich etwas falsch?

+0

Post spec js auch –

+0

'// spec.js beschreiben ('Protractor Demo App', function() { es ("sollte ein und zwei hinzufügen", Funktion() { browser.get ('http://juliemr.github.io/protractor-demo/'); console.log ("seeking' first' "); Element (by.model ('first')). sendKeys (1); console.log ("seconding"); element (by.model ('second')). sendKeys (2); Konsole .log ("seeking' gobutton' "); Element (by.id ('gobutton')). ​​Click(); console.log ("sucht' spätestes "); expect (Element (by.binding ('latest')). GetText()). ToEqual ('5'); // Das ist falsch! }); }); ' – pfuntner

Antwort

0

Nun gibt es einige mögliche Dinge hier passiert

  1. Das Element, das durch das Element zurückgegeben wird (by.binding ('latest')) nicht die richtige

  2. Es gibt mehrere Elemente

    zurück

das Element an Sie zurückgegeben wird, nicht auf dem Bildschirm sichtbar Anpasselement (by.binding (‚latest‘)) und die erste, man wird. Chromedriver ist sehr spezifisch, wenn es darum geht, Aktionen am Element auszuführen, die für den Benutzer sichtbar sind. Wenn das Element für den Benutzer nicht sichtbar ist, sollte eine Automatisierung nicht in der Lage sein, eine Aktion zu simulieren (nicht 100% wahr, weil einige Aktionen noch ausgeführt werden können).

So stellen Sie sicher, dass Sie das richtige Element bekommen und es gibt keine mehrere Übereinstimmungen

Verwandte Themen