2017-02-11 6 views
0

Ich versuche, ein Kontrollkästchen aus einem Dropdown in jq Widgets auszuwählen. Jetzt funktioniert der Code, wenn das Element angezeigt wird, aber nicht anders. Ich verstehe, dass wir zu Element scrollen müssen, damit Winkelmesser es finden können. Ich habe versucht, hier executeScript und scrollIntoView zu verwenden, kann aber nicht zu dem Element scrollen. Ich habe auch ein paar andere Dinge ausprobiert. Bitte hilf mir dabei.Nicht in der Lage, mit einem Winkelmesser zum Element in einem Dropdown zu scrollen

// conf.js 
exports.config = { 
    directConnect: true, 
    framework: 'jasmine', 
    specs: ['jq.spec.js'], 

    jasmineNodeOpts: { 
     showColors: true, 
     defaultTimeOutInterval: 30000000 
    }, 
} 

Mein jq.spec.js:

describe('should check jq widgets', function() { 

    it("should check the scrolling is proper",function() { 
     browser.ignoreSynchronization = true; 
     browser.get('http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxdropdownlist/checkboxes.htm?arctic'); 
     browser.wait(protractor.ExpectedConditions.visibilityOf($('#dropdownlistContentjqxWidget')),500000,'dropdown did not display'); 
     $('#dropdownlistContentjqxWidget').click().then(function(){ 
      $('#listitem0innerListBoxjqxWidget>div').click(); 
      scrollIntoView(element(by.xpath("//span[text()='Francisco Chang']/parent::div/div"))); 
      element(by.xpath("//span[text()='Francisco Chang']/parent::div/div")).click(); 
      browser.sleep(10000); 
     }); 
    }); 
}); 

var scrollIntoView = function(element){ 
    browser.executeScript(function(element) { 
     element.scrollIntoView(); 
     }, element.getWebElement()); 
    }); 

}; 

// Fehler:

Failures: 
1) should check jq widgets should chech the scrolling is proper 
    Message: 
    Failed: No element found using locator: By(xpath, //span[text()='Francisco Chang']/parent::div/div) 
+0

ich immer noch auf diese Hilfe benötigen Bitte helfen – Ravi

Antwort

0

Ich würde vorschlagen, Ihre scrollIntoView Funktion zu verändern. Der Wrapper für Jasmin löst alles in den Kontrollfluss auf, aber da es void zurückgibt, bin ich ziemlich sicher, dass dies die Ausführung von scrollIntoView startet und sofort zurückkehrt (bevor browser.executeScript zum Kontrollfluss hinzugefügt wird. Dann versucht man auf das Element zu klicken ohne es zu scrollen . in den Blick auch auf Vollständigkeit habe ich eine JSDoc.

/** 
* Scroll to find some element in the view 
* @param {ElementFinder} element the located element of interest 
* @returns {webdriver.promise.Promise} returns a webdriver promise 
*/ 
var scrollIntoView = function(element){ 
    return browser.executeScript(function(element) { 
     element.scrollIntoView(); 
     }, element.getWebElement()); 
    }); 
}; 
+0

ich das gerade versucht, seine immer noch die gleichen auch ich nicht das Scrollen visuell auch sehen können!... – Ravi

+0

Warum schalten Sie die Synchronisation aus? Testen Sie eine nicht eckige Seite? – cnishina

+0

Ja, es ist eine nicht-eckige Seite – Ravi

Verwandte Themen