我已经看过其他一些使用以下格式的帖子,但它根本不起作用,即使选择没有打开:
.click(".selectpicker option[value='somevalue']")
但是当我写这样的时候:
.click("select[id='chooseone']")
确实打开了下拉列表。
选择如下:
<select class="selectpicker btn dropdown-toggle btn-default" title="Choose one of the following..." id="chooseone" style="">
<option value="chooseone" style="">Choose one</option>
<option value="value1" style="">option 1</option>
<option value="value2" style="">option 2</option>
<option value="value3">option 3</option>
</select>
后端有反应代码,因此会触发onchange事件,该事件将显示每个选项的适当输入字段和提交按钮。
我的测试基本上是:
我该如何编写此代码?这是我第一次这样的事情。任何帮助表示赞赏。
由于
更新&gt;&gt;&gt;
这是在Safari中,它不起作用。但是当我安装chromedriver时,它确实有效。这是工作代码:
.click('select[id="searchBySelect"] option[value="any_option_value"]')
这将点击select
元素中提供的选项。
答案 0 :(得分:1)
首先,您需要打开下拉菜单。看起来你已经知道这一点,但无论如何你都应该从:
开始browser.click('.selectpicker');
然后有几种方法可以获得您想要点击的选项。您可以通过执行以下操作来选择特定选项(只需修改它以选择您想要的任何选项)
browser.element('css selector', '.selectpicker', function(element) {
browser.elementIdElement(element.value.ELEMENT, 'css selector', 'option[value="value1"]', function(option) {
browser.elementIdClick(option.ELEMENT);
});
});
或者您可以获取数组中的所有选项,然后单击其中一个选项:
browser.elements('css selector', 'option', function(elements) {
browser.elementIdClick(elements.value[0].ELEMENT); //can use any index here as long as you know which one you are looking for
});
答案 1 :(得分:0)
tehbeardedone 非常感谢您提供解决方案。我必须做一个小修复才能使 elementIdClick() 正常工作。
代替option.ELEMENT
我不得不使用option.value.ELEMENT
由于我的代码片段必须添加到页面对象中,这是它的最终版本:
let durationOptionSelector = `option[contains(text(), "${duration}")]`; //dynamic option selector
this.click("@duration_dropdown");
this.api.element("xpath", "@duration_dropdown", function (dropdown) {
this.elementIdElement(dropdown.value.ELEMENT, "xpath", durationOptionSelector, function(option) {
this.elementIdClick(option.value.ELEMENT);
});
});