我现在用的是写一些测试摩卡测试框架和柴断言中图书馆我在Chrome浏览器一直在测试这些,他们工作得很好,但后来我尝试他们在无头的浏览器摩卡phantomjs和.点击()事件,我发送某些元素似乎不会被解雇,而其他人正在工作.
测试成功登录到网站,使用以下方式完成:
$("#login").click()
Run Code Online (Sandbox Code Playgroud)
"#login"是表单提交按钮,单击此方式可以正常工作.
接下来我想点击一个作为锚元素的菜单项.
$("#menuItemToClick").click();
Run Code Online (Sandbox Code Playgroud)
这是它停止在mocha-phantomjs工作的地方,即使这在chrome中运行良好.
所以很明显.click()函数已经定义并且可以工作但不适用于这个元素.
我已经筋疲力尽了google-foo.以下是我见过的其他一些提及和试过的事情:
var evObj = new CustomEvent('click');
evObj.initEvent('click', true, false);
document.getElementById('menuItemToClick').dispatchEvent(evObj);
Run Code Online (Sandbox Code Playgroud)
这会触发click事件并将浏览器带到正确的url,但它也会导致整个页面重新加载,在chrome和mocha-phantomjs中,从一开始就重新启动测试,将它们置于无限循环中......是否存在一种使用它的方法,而不会导致页面重新加载?
var elementPosition = $("#menuItemToClick").offset();
page.sendEvent('click', elementPosition.left + 1, elementPosition.top + 1);
Run Code Online (Sandbox Code Playgroud)
如果您传递元素的正确坐标,则应该发送本机单击事件.我试图让它工作但我似乎无法从正在运行的mocha测试中访问该页面.有没有办法从mocha-phantomjs测试中访问phantomjs页面变量?
任何帮助是极大的赞赏!
我有一些Meteor方法,我想保护它们,以便只有某些用户可以从客户端调用它们.但是,服务器也使用这些方法.我在this.userid中传递了userid,因此我可以检查用户是否已登录,是否允许他们拨打电话,没问题.但是,当我还需要从服务器端调用该方法时,如何确定它是服务器调用,以便我可以允许该方法执行.检查没有this.userid确定其服务器调用是否允许未经过身份验证的用户也调用该方法.我正在寻找一种方法来确定该方法是否被服务器调用,以便我可以允许它并仍然阻止未经过身份验证的用户调用该方法.
Meteor.methods({
makeCoffee: function (time) {
check(time, Number);
if(calledByServer || (Meteor.user() && Meteor.user().profile.usertype === 'coffee dude')){
//Makin' Coffee
}
else
throw new Meteor.Error(404, "Can't find my pants");
return "Coffee will be made at " + time;
}
Run Code Online (Sandbox Code Playgroud) 我有一个Meteor项目,它使用appcache包在浏览器中保留Meteor应用程序的缓存.现在我购买了SSL证书,并希望开始强制用户连接到该站点的https://地址.所以我添加了force-ssl包.但是,当用户访问http://example.com时,会加载Meteor应用程序的缓存版本,它会收到缓存更新通知,并尝试开始下载新版本的应用程序.因此,http://站点现在正在尝试从https://站点请求资源,并且由于CORS问题,浏览器会阻止此操作.
我有点使用force-ssl包,甚至尝试设置一些标题:
var host = url.parse(Meteor.absoluteUrl()).hostname;
res.setHeader('access-control-allow-origin', 'http://' + host);
res.setHeader('access-control-allow-credentials', 'true');
res.setHeader('access-control-allow-methods', 'POST, GET, OPTIONS');
Run Code Online (Sandbox Code Playgroud)
但我仍然看到像这样的CORS错误:
GET https://www.example.com/sockjs/881/y6to3ysz/xhr 405 (Method Not Allowed)
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何正确设置标题,以便更新可以从https://到http://网站?我正在设置socksjs标头等的兔子洞,并认为可能有人已经这样做了,可能会节省我一些时间.
所以我试图将Okta设置为身份提供者,我想使用服务提供者启动的工作流登录到应用程序.我在Okta中设置了模板SAML 2.0应用程序,并在服务提供商上设置了入口点和SAML证书.服务提供商启动工作流程就好了,弹出窗口打开Okta登录对话框.但是一旦登录完成,我将进入Okta门户网站,其中包含我的应用程序列表.应该发生的是重新直接返回服务提供商,以便它可以使用userID在那里登录用户.
我按照此处的说明设置了IdP https://support.okta.com/entries/23364161-Configuring-Okta-Template-SAML-2-0-application
这是我在Okta中的配置
Application Label: App Name
Force Authentication: no
Name ID format: EmailAddress
Recipient: https://serviceprovider.com/_saml/validate/okta/
Audience Restriction: https://serviceprovider.com/
authnContextClassRef: Password Protected Transport
Destination: https://serviceprovider.com/_saml/validate/okta/
Response: signed
Assertion: signed
Request: uncompressed
Default Relay State: Leave blank since we are only doing SP initiated workflow
Post Back URL: https://serviceprovider.com/_saml/validate/okta/
Attribute Statements: none
Group Name: leave blank
Group filter: leave blank
Run Code Online (Sandbox Code Playgroud)
我没有在Okta门户或Okta管理面板中看到任何错误,因此我无法弄清楚为什么它没有完成工作流程并重新定向回SP.在Okta有一个地方可以看到过程中可能出现的任何错误吗?
有人知道可能会发生什么吗?
这是我看到的完整错误:
/Users/myName/.meteor/tools/8d9edffd4f/lib/node_modules/fibers/future.js:173
throw(ex);
^
TypeError: Cannot call method 'split' of undefined
at Object.exports.parse (/Users/myName/.meteor/tools/8d9edffd4f/tools/parse-stack.js:18:26)
at Object.exception (/Users/myName/.meteor/tools/8d9edffd4f/tools/buildmessage.js:355:28)
at /Users/myName/.meteor/tools/8d9edffd4f/tools/packages.js:495:22
at Array.forEach (native)
at Function._.each._.forEach (/Users/myName/.meteor/tools/8d9edffd4f/lib/node_modules/underscore/underscore.js:79:11)
at [object Object]._.extend.build (/Users/myName/.meteor/tools/8d9edffd4f/tools/packages.js:279:7)
at /Users/myName/.meteor/tools/8d9edffd4f/tools/packages.js:1088:13
at Array.forEach (native)
at Function._.each._.forEach (/Users/myName/.meteor/tools/8d9edffd4f/lib/node_modules/underscore/underscore.js:79:11)
at [object Object]._.extend.build (/Users/myName/.meteor/tools/8d9edffd4f/tools/packages.js:1087:7)
at [object Object]._.extend.getForApp (/Users/myName/.meteor/tools/8d9edffd4f/tools/library.js:285:9)
at /Users/myName/.meteor/tools/8d9edffd4f/tools/bundler.js:1762:25
at Object.capture (/Users/myName/.meteor/tools/8d9edffd4f/tools/buildmessage.js:191:5)
at Object.exports.bundle (/Users/myName/.meteor/tools/8d9edffd4f/tools/bundler.js:1697:31)
at [object Object]._.extend._runOnce (/Users/myName/.meteor/tools/8d9edffd4f/tools/run-app.js:396:32)
at [object Object]._.extend._fiber (/Users/myName/.meteor/tools/8d9edffd4f/tools/run-app.js:520:28)
at /Users/myName/.meteor/tools/8d9edffd4f/tools/run-app.js:340:12
Run Code Online (Sandbox Code Playgroud)
其他人遇到这个问题?