Javascript 无法使用量角器滚动到下拉列表中的元素
我试图从jq小部件的下拉列表中选择一个复选框。现在,当元素在视图中时,代码可以工作,但在其他情况下则不能。我知道我们需要滚动到元素,量角器才能找到它。我尝试在这里使用executeScript和scrollIntoView,但无法滚动到元素。我还尝试了其他一些东西。请帮我做这个Javascript 无法使用量角器滚动到下拉列表中的元素,javascript,selenium,selenium-webdriver,scroll,protractor,Javascript,Selenium,Selenium Webdriver,Scroll,Protractor,我试图从jq小部件的下拉列表中选择一个复选框。现在,当元素在视图中时,代码可以工作,但在其他情况下则不能。我知道我们需要滚动到元素,量角器才能找到它。我尝试在这里使用executeScript和scrollIntoView,但无法滚动到元素。我还尝试了其他一些东西。请帮我做这个 // conf.js exports.config = { directConnect: true, framework: 'jasmine', specs: ['jq.spec.js'],
// 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)
我建议更改
滚动查看功能。jasmine的包装器将所有内容解析到控制流中,但由于它返回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());
});
};
我刚才试过这个。它还是一样的。而且,我也看不到滚动的视觉效果。你为什么要关闭同步?你正在测试一个非角度的页面吗?是的,这是一个非角度的页面。然后你需要提供你自己的点击和选择之间的等待逻辑。我还认为,当忽略同步时,预期条件不起作用此选项设置为true。我现在将使用睡眠替换预期条件。我想我测试了单击并选择了使用。我将再次尝试。我仍然需要这方面的帮助。请帮助!