我正在尝试从下拉列表中选择一个值。
这是HTML:
<select id="selectFilter">
<option value></option>
<option value="FEE">FEE</option>
<option value="PW">PW</option>
我选择的代码是:
select('PW', :from => 'selectFilter')
我收到错误,因为身份selectFilter
在两个地方是相同的
Ambiguous match, found 2 elements matching "selectFilter" (Capybara::Ambiguous)
如何选择我需要的选项?
答案 0 :(得分:0)
HTML protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
Log.d(TAG, "onActivityResult");
if ((requestCode == mFilechooserResultcode) && (resultCode == RESULT_OK)) {
if ((mFIlePathCallback == null) && (mFIlePathCallbackLollipop == null)) {
return;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//lollipop +
String dataString = intent.getDataString();
if (dataString != null) {
Uri[] result = new Uri[]{Uri.parse(dataString)};
mFIlePathCallbackLollipop.onReceiveValue(result);
mFIlePathCallbackLollipop = null;
}
} else {
//kitkat -
Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData();
mFIlePathCallback.onReceiveValue(result);
mFIlePathCallback = null;
}
}
}
属性应该在页面上是唯一的。您需要重命名至少一个id
s,以免它们发生碰撞。
如果由于某种原因你真的不能/不会选择独特selectFilter
s,Capybara的select
也会找到id
和name
s,但是你必须提供一些独特的东西才能找到合适的元素。
答案 1 :(得分:0)
如果你确实有两个具有相同id的元素,那么你真的应该修复你的HTML。另一方面,如果您有一个具有该ID的选择,而另一个选择具有该名称,占位符或标签文本,则可以执行
find('#selectFilter').find(:option, 'PW').select_option
可以通过id找到并且可以解决您的问题。
如果你确实有两个带有id的元素并且拒绝/无法修复HTML,那么你可以将初始查找范围限定在页面的某个部分,如
find('#some_section').select('PW', from: 'selectFilter')
或者如果页面上只有一个'PW'选项,则可以执行
find(:option, 'PW').select_option