Nightwatch 集成测试:无法从 Safari 中的 select 下拉列表中选择 select 选项
Nightwatch integration test: Can't select option from select dropdown in Safari
我已经阅读了其他帖子并尝试了建议(例如 Nightwatch Cannot Find/Click on Dropdown Option and Nightwatch to select option from select box)但没有成功。
似乎无论我用什么方法与 select 框交互,在 safari 上都不起作用。我仅用于 chrome 的选项在 chrome 浏览器上仍然可以正常工作,但我们正在寻求提高我们的 safari 集成测试和 运行.
适用于 chrome 的选项是:
.click('select[name="elementName"] option.OptionClass')
然而,这会留下 select 或点击 safari 但没有选项 selected,破坏了我们需要 selection 的表格。
我试过像
一样连续点击两个
.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');
});
以及我能想到的每一种组合。
nightwatch 问题、google 组或 Whosebug 中的此处到目前为止没有任何帮助。有没有人遇到过这个问题,有没有人想出解决办法?
注意:我也尝试过寻找一种通用的 selenium 方法来执行此操作,并使用 .execute('insert javascript to change value of select element') 但这不会触发 onchange 事件并且表单不会无论如何提交。
如果我在本地手动拦截测试并在自动化打开 select 框后单击 select 选项它工作正常,我只需要一种方法来导航和/或单击打开后的选项。
我为此花费了大约 2-3 天的时间,非常感谢您的帮助。谢谢!
可能有用的方法是获取您要查找的 <option>
的可见文本,并将其用作 setValue()
的参数。这适用于我的 Chrome 浏览器:
browser
.getText('select[name="elementName"] option.OptionClass', function(result) {
client.setValue('select[name="elementName"]', result.value);
})
选项 2:
您也可以尝试 运行 JavaScript 和 execute()
并以编程方式设置值,然后在您的 select
元素上触发更改事件:
var select = document.querySelector('select[name="elementName"]'),
option = select.querySelector('option.OptionClass');
select.value = option.value;
select.dispatchEvent(new Event("change", { bubbles: true }));
我已经阅读了其他帖子并尝试了建议(例如 Nightwatch Cannot Find/Click on Dropdown Option and Nightwatch to select option from select box)但没有成功。
似乎无论我用什么方法与 select 框交互,在 safari 上都不起作用。我仅用于 chrome 的选项在 chrome 浏览器上仍然可以正常工作,但我们正在寻求提高我们的 safari 集成测试和 运行.
适用于 chrome 的选项是:
.click('select[name="elementName"] option.OptionClass')
然而,这会留下 select 或点击 safari 但没有选项 selected,破坏了我们需要 selection 的表格。
我试过像
一样连续点击两个.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'); });
以及我能想到的每一种组合。
nightwatch 问题、google 组或 Whosebug 中的此处到目前为止没有任何帮助。有没有人遇到过这个问题,有没有人想出解决办法?
注意:我也尝试过寻找一种通用的 selenium 方法来执行此操作,并使用 .execute('insert javascript to change value of select element') 但这不会触发 onchange 事件并且表单不会无论如何提交。
如果我在本地手动拦截测试并在自动化打开 select 框后单击 select 选项它工作正常,我只需要一种方法来导航和/或单击打开后的选项。
我为此花费了大约 2-3 天的时间,非常感谢您的帮助。谢谢!
可能有用的方法是获取您要查找的 <option>
的可见文本,并将其用作 setValue()
的参数。这适用于我的 Chrome 浏览器:
browser
.getText('select[name="elementName"] option.OptionClass', function(result) {
client.setValue('select[name="elementName"]', result.value);
})
选项 2:
您也可以尝试 运行 JavaScript 和 execute()
并以编程方式设置值,然后在您的 select
元素上触发更改事件:
var select = document.querySelector('select[name="elementName"]'),
option = select.querySelector('option.OptionClass');
select.value = option.value;
select.dispatchEvent(new Event("change", { bubbles: true }));