我是新手使用黄瓜和红宝石进行BDD单元测试,并希望获得一些关于尝试在没有UI的情况下运行测试时发生的错误的帮助。
如果我的任何条款或阶段不正确,请告诉我。
场景:在页面上有一个下拉列表,一旦开始输入,它就会回退数据。在测试中,我输入一个值并搜索数据,一旦它返回,我点击所选的值。这是通过以下代码完成的,
selectClient.fill_in 'client', with: client_name
page.has_no_css?('.Select-loading-zone')
selectClient.find('[name=client]').send_keys(:enter)
selectClient是一个var,用于查找下拉列表所在的部分,这样我就不会搜索整个页面来查找控件。
当它在为UI运行时正常工作但在没有UI的情况下运行时,我会收到以下错误,因为单击或选择了所选项目。
Capybara :: Poltergeist :: MouseEventFailed:在坐标[122,261.5]点击点击失败。 Poltergeist使用CSS选择器检测到另一个元素'html.no-js body.ng-scope.rebranding div.wrapper.ng-scope div.inner.ng-scope div.container-fluid div.ng-scope div #module-container。 ng-scope div.myob section.ledger-upgrade div.row div.col-xs-24 div div div.form-group div.Select.create-business.Select - single.is-searchable div.Select-control span #alaction-select-2 - value.Select-multi-value-wrapper div.Select-placeholder'在这个位置。它可能与您尝试与之交互的元素重叠。如果您不关心重叠元素,请尝试使用node.trigger('click')。
我使用以下
尝试了建议的更改 selectClient.find('[name=client]').trigger('click')
这似乎不适用于UI和UI。 使用UI,我收到以下错误消息
Capybara :: NotSupportedByDriverError:Capybara :: Driver :: Node#trigger
如果没有用户界面,则不会触发或选择点击。
我尝试了以下选项,但仍然没有运气,因为所选内容没有点击或没有用户界面选择。
selectClient.find('[name=client]', :visible=> false).trigger('click')
selectClient.find('[name=client]', :visible=> false).trigger(':enter')
selectClient.find('[name=client]', :visible=> false).trigger(':return')
selectClient.find('[name=client]', :visible=> false).send_keys : enter
selectClient.find('[name=client]', :visible=> false).native.send_keys : return
我也尝试过将Javascript与下面的代码段一起使用,但似乎没有点击或选择没有用户界面的时候。
page.execute_script('var keyEvent = document.createEventObject ? document.createEventObject() : document.createEvent("Events");
if(keyEvent.initEvent){ keyEvent.initEvent("keydown", true, true); }
keyEvent.keyCode = 13;
keyEvent.which = 13;
document.dispatchEvent ? document.dispatchEvent(keyEvent) : document.fireEvent("onkeydown", keyEvent);
document.getElementsByName("client")[0].dispatchEvent(keyEvent);')
我正在使用poltergeist(1.12),capybara(2.6.2),selenuim-webdriver(2.50),黄瓜(> 2.0)
如果需要更多详细信息,请与我们联系。
谢谢。