小编Dsy*_*yko的帖子

.click()在某些元素的mocha-phantomjs中不起作用

我现在用的是写一些测试摩卡测试框架柴断言中图书馆我在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.以下是我见过的其他一些提及和试过的事情:

使用javascript dispatchEvent

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中,从一开始就重新启动测试,将它们置于无限循环中......是否存在一种使用它的方法,而不会导致页面重新加载?

使用phantomjs'page.sendEvent()

var elementPosition = $("#menuItemToClick").offset();
page.sendEvent('click', elementPosition.left + 1, elementPosition.top + 1);
Run Code Online (Sandbox Code Playgroud)

如果您传递元素的正确坐标,则应该发送本机单击事件.我试图让它工作但我似乎无法从正在运行的mocha测试中访问该页面.有没有办法从mocha-phantomjs测试中访问phantomjs页面变量?

任何帮助是极大的赞赏!

jquery click mocha.js phantomjs chai

13
推荐指数
1
解决办法
6533
查看次数

是否可以确定服务器是否调用了Meteor方法

我有一些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)

javascript meteor

9
推荐指数
1
解决办法
1282
查看次数

已经使用appcache将force-ssl包添加到Meteor项目

我有一个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标头等的兔子洞,并认为可能有人已经这样做了,可能会节省我一些时间.

ssl caching websocket node.js meteor

5
推荐指数
1
解决办法
310
查看次数

当使用Okta作为带有SP启动工作流的IdP时,登录永远不会离开Okta门户

所以我试图将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有一个地方可以看到过程中可能出现的任何错误吗?

有人知道可能会发生什么吗?

saml-2.0

4
推荐指数
1
解决办法
6855
查看次数

更新后的Meteor中断到0.7.1.1无法调用未定义的方法'split'

这是我看到的完整错误:

/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)

其他人遇到这个问题?

javascript node.js meteor

3
推荐指数
1
解决办法
552
查看次数

标签 统计

meteor ×3

javascript ×2

node.js ×2

caching ×1

chai ×1

click ×1

jquery ×1

mocha.js ×1

phantomjs ×1

saml-2.0 ×1

ssl ×1

websocket ×1