我已经阅读了其他帖子并尝试了建议(例如守夜人无法找到/单击下拉选项 https://stackoverflow.com/questions/27466980/nightwatch-cannot-find-click-on-dropdown-option and 夜巡从选择框中选择选项 https://stackoverflow.com/questions/36020702/nightwatch-to-select-option-from-select-box)没有成功。
似乎无论我使用什么方法与选择框交互,在 safari 上都不起作用。我仅用于 chrome 的选项在 chrome 浏览器上仍然可以正常工作,但我们希望启动并运行 safari 集成测试。
适用于 chrome 的选项是:
.click('select[name="elementName"] option.OptionClass')
然而,这使得选择器在 safari 上单击,但没有选择任何选项,从而破坏了需要选择的表单。
我尝试过连续点击两个
.click('select[name="elementName"]')
.click(' option.OptionClass')
使用按键:
.click('select[name="elementName"]')
.keys(['\uE015', '\uE006'])
包装在执行调用中:
browser.perform(function() {
browser
.click('select[id=element-id]')
.click('option.className');
});
以及我能想到的每一种组合。
到目前为止,守夜人问题、谷歌群组或 stackoverflow 中的任何内容都没有帮助。有谁遇到过这个问题并且有人找到解决方案吗?
注意:我也尝试过寻找通用的硒方法来执行此操作,并使用 .execute('insert javascript to change value of select element') 但这不会触发 onchange 事件,并且表单不会触发无论如何提交。
如果我在本地手动拦截测试并在自动化打开选择框后单击选择选项,则它可以正常工作,我只需要一种在打开后导航到或单击该选项的方法。
我为此投入了大约 2-3 天的工作,因此非常感谢您的帮助。谢谢!
可能有效的是获取可见文本<option>
您正在寻找,并将其用作参数setValue()
。这对于我的 Chrome 浏览器来说效果很好:
browser
.getText('select[name="elementName"] option.OptionClass', function(result) {
client.setValue('select[name="elementName"]', result.value);
})
选项2:
您还可以尝试使用以下命令运行 JavaScriptexecute()
并以编程方式设置值,然后在您的select
元素:
var select = document.querySelector('select[name="elementName"]'),
option = select.querySelector('option.OptionClass');
select.value = option.value;
select.dispatchEvent(new Event("change", { bubbles: true }));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)