此登录后用户的代码应发布一些问候消息。
describe("launching Telekha",function(){
it("navigating to signin page",function(){
browser.get("www");
element(by.model("credentials.email")).sendKeys("abnsd6@gmail.com");
element(by.model("credentials.password")).sendKeys("123456");
var ptr = element( by.css('[ng-click="login()"]') );
ptr.click();
});
it("on dashboard",function(){
element(by.model("post.postText")).sendKeys("hello");
element( by.css('[ng-click="postit()"]') ).click();
});
});
按钮的HTML代码
<textarea id="post-editor" placeholder="Tell your friends" ng-model="post.postText" class="textareanoborder col-xs-12 col-md-12 ng-pristine ng-valid ng-isolate-scope ng-touched" autocomplete="off" aria-invalid="false"> </textarea>
答案 0 :(得分:1)
这是一个猜测,但从经验来看,它通常并不遥远。当您正在导航到的页面被加载时,是否有任何动画,AJAX请求或其他延迟,与可能发生的AngularJS分开?量角器不会等待这些并执行代码:
element(by.model("post.postText")).sendKeys("hello");
尽快。如果执行此操作时,所有动画尚未完成,则量角器将无法看到您的元素,并且您将看到您遇到的错误。
要快速测试此项,请在其失败的行之前添加browser.sleep(10000);
。 browser.sleep();
是一个强制浏览器等待一段时间的命令,在这种情况下是10.000毫秒(10秒)。
如果这最终起作用,您可能希望将其更改为更优雅的内容,例如:
browser.wait(function() {
return element(by.model("post.postText")).isPresent();
}, 10000);
等待您的元素变为可见,但最多只能持续10秒,之后它将继续显示。
EDIT1 :(工作正常):
HTML(服务于http://localhost:8080)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example</title>
<script src="bower_components/angular/angular.min.js"></script>
<script>
var app = angular.module('app', []);
app.controller('myCtrl', function($scope) {
});
</script>
</head>
<body ng-app="app" ng-controller="myCtrl">
<textarea id="post-editor" placeholder="Tell your friends" ng-model="post.postText" class="textareanoborder col-xs-12 col-md-12 ng-pristine ng-valid ng-isolate-scope ng-touched" autocomplete="off" aria-invalid="false"> </textarea>
</body>
</html>
spec.js
describe('angularjs homepage todo list', function() {
it('should add a todo', function() {
browser.get('http://localhost:8080');
$("#post-editor").sendKeys("testlol");
browser.sleep(2000);
});
});
conf.js
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['spec.js']
};
答案 1 :(得分:0)
您可以实现 protractor.ExpectedConditions.visibilityOf()方法,等待元素在UI上可见,然后将数据发送到输入字段。
var EC=protractor.ExpectedConditions;
it("on dashboard",function(){
var ele=element(by.id("post-editor"));
browser.wait(EC.visibilityOf(ele),8000,'Ele is not presented');
ele.sendKeys("hello");
element( by.css('[ng-click="postit()"]') ).click();
});