use*_*582 2 angularjs-e2e protractor
我编写了一个利用require js的角度项目,因此大多数javascript都不会在登陆特定页面之前加载.(包括angular.js)
在编写流程时,我不得不使用browser.driver代替ptor,这很有效,直到角度组件进入.现在我试图找到一种方法将ptor的初始化压缩到browser.driver并滚动特定流量后的角度.所以我有这样的事情
browser.driver.getCurrentUrl().then(function(url){
ptor = protractor.getInstance();
// ptor.ignoreSynchronization = true;
ptor.get(url);
})
ptor.sleep(2000);
Run Code Online (Sandbox Code Playgroud)
即使我超时,这似乎是在声明之后未定义ptor.我该怎么做这里的交换.并使用url做一个量角器的构造函数.没有重装.
--------------插件---------确定所以这就是我所拥有的
searchInput = browser.driver.findElement(by.css('#searchstring'));
searchInput.sendKeys('logan airport');
searchInput.sendKeys(protractor.Key.ENTER)//.perform();
browser.driver.sleep(6000);
browser.driver.wait(function(){ //angular loads here
return browser.driver.getCurrentUrl(function(url){
searchUrl = url;
return /screwdriver/.test(url);
});
}, 10000)
browser.driver.sleep(2000);
/*UNEXECUTED CODE HERE: Error while waiting for angular to sync with your page*/
firstItem = element.all(by.css('.itemContainer')).get(1).click();
browser.driver.sleep(10000);
Run Code Online (Sandbox Code Playgroud)
这就是我现在正在做的事情......
searchInput = ptor.findElement(protractor.By.css('#searchstring'));
searchInput.sendKeys('logan airport');
searchInput.sendKeys(protractor.Key.ENTER)//.perform();
ptor.sleep(6000);
ptor.wait(function(){ //this page loads angular, but stuck on white page, which with previous version this is fluent, it says angular cannot be found on the page
return ptor.driver.getCurrentUrl().then(function(url){
searchUrl = url;
return /screwdriver/.test(url);
});
}, 10000)
ptor.sleep(2000);
/*NOT EXECUTED: Error while waiting for angular to sync with your page*/
foundItems = ptor.findElement(protractor.By.css('.itemContainer'));
firstItem = foundItems.get(1).click();
ptor.sleep(2000);
Run Code Online (Sandbox Code Playgroud)
两者似乎都不起作用,一个是角度不同步,另一个是角度未找到,但实际页面将有角度存在,如果你点击f12并键入角度.
您实际上不必使用新语法构造ptor(在新语法中,ptor~ = browser).ptor.url意思是"加载此页面",而不是"为此页面制作量角器".你可能想要这样的东西:
browser.driver.get(yourUrl);
browser.driver.wait(function() {
// Put in some test here that returns true when Angular is ready to go.
});
element(by.id('foo')); // Start using protractor here!
Run Code Online (Sandbox Code Playgroud)