2017-02-11 17 views
0

Я пытаюсь установить флажок из выпадающего списка в виджетах jq. Теперь код работает, когда элемент находится в поле зрения, но не иначе. Я понимаю, что нам нужно прокрутить элемент для транспортира, чтобы он мог его найти. Я попытался использовать executeScript и scrollIntoView здесь, но не смог прокрутить элемент. Я попробовал и другие вещи. Пожалуйста, помогите мне с этим.Невозможно прокрутить элемент в раскрывающемся списке с помощью protractor

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

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

Моего 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()); 
    }); 

}; 

// ошибка:

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

Я все еще нужна помощь на этом Пожалуйста, помогите – Ravi

ответ

0

Я хотел бы предложить изменить свою scrollIntoView функцию. Обертка для жасмина разрешает все в поток управления, но поскольку он возвращает void, я уверен, что это начинает выполнение scrollIntoView и немедленно возвращается (до добавления browser.executeScript в поток управления. Затем вы пытаетесь щелкнуть элемент без прокрутки . в поле зрения также для полноты я добавил 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

Я попробовал это только теперь его все тот же Кроме того, я не могу видеть прокрутки визуально тоже!... – Ravi

+0

Почему вы отключили синхронизацию? Вы тестируете не угловую страницу? – cnishina

+0

Да, ее неглавная страница – Ravi