精华内容
下载资源
问答
  • 2020-07-20 16:50:20

    ui自动化测试的时候难免会遇到下拉框选项的问题,如图随便写了个下拉框,来介绍下三种定位选项的方法。
    在这里插入图片描述
    首先导入Select类

    from selenium.webdriver.support.select import Select
    
    Select(webelement)#在调用方法前需要实例化Select,传入webelement对象
    

    其中有三种定位方法如下:

    1.select_by_visible_text():选项的文本内容

    from selenium.webdriver.support.select import Select
    from time import sleep
    from selenium import webdriver
    
    dr=webdriver.Chrome()
    dr.get('url')
    dr.maximize_window()
    #先定位到下拉框,通过text文本定位
    Select(find_element_by_id('q')).select_by_visible_text('苍井空')
    sleep(2)
    dr.quit()
    

    2.select_by_value():value属性定位

    from selenium.webdriver.support.select import Select
    from time import sleep
    from selenium import webdriver
    
    dr=webdriver.Chrome()
    dr.get('url')
    dr.maximize_window()
    #先定位到下拉框,通过value属性定位
    Select(find_element_by_id('q')).select_by_value('3')
    sleep(2)
    dr.quit()
    

    3.select_by_index():索引定位(0开始)

    from selenium.webdriver.support.select import Select
    from time import sleep
    from selenium import webdriver
    
    dr=webdriver.Chrome()
    dr.get('url')
    dr.maximize_window()
    #先定位到下拉框,通过索引定位
    Select(find_element_by_id('q')).select_by_index('1')
    sleep(2)
    dr.quit()
    
    更多相关内容
  • 但是当弹出框超过一屏需要滚动时,select的下拉选项会出现错位(下图1为正常,图2为滚动后,下拉选项错位。) 图1: 图2: 在分析组件代码后,发现以下一个样式: .ivu-modal .ivu-select-dropdown { position: ...
  • 主要介绍了JavaScript实现两个select下拉框选项左移右移功能,js实现下拉框元素互相移动,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要分享了一些javascript下拉框选项单击事件的例子,以及在例子中遇到的问题的解决方法,十分实用,推荐给小伙伴们参考下。
  • excel如何设置下拉框选项

    万次阅读 2021-09-03 18:06:02
    当我们需要在Excel中大量输入相同的多个数据时,可以设置下拉框选项,这能极大程度上减少我们的工作量。看看如何进行操作吧。 工具/原料 电脑 Excel表 方法/步骤 例如,我们完成如下的表格,在空白...

    当我们需要在Excel中大量输入相同的多个数据时,可以设置下拉框选项,这能极大程度上减少我们的工作量。看看如何进行操作吧。

    excel如何设置下拉框选项

    工具/原料

    • 电脑

    • Excel表

    方法/步骤

    1. 例如,我们完成如下的表格,在空白的地方输入要设置下拉框选项的文字“男、女”。然后选定需要设置下拉框选项的区域。

      excel如何设置下拉框选项

    2. 点击功能区内的“数据”--“数据有效性”。

      excel如何设置下拉框选项

    3. 在数据有效性的下拉边框内点击选择“设置”--“允许”下的“序列”。

      excel如何设置下拉框选项

    4. 然后在“来源”后面,点击选择数据来源选择的按钮。

      excel如何设置下拉框选项

    5. 如下图,拖动鼠标选定“男、女”,再次点击上面的数据来源按钮,返回设置对话框。

      excel如何设置下拉框选项

    6. 在设置对话框内点击“确定”按钮。当我们再次点击输入区域时就可以看到下拉框选项了。

      excel如何设置下拉框选项

      END

    经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业

    展开全文
  • 1、为了避免excel下拉框选项过多会导致内容不显示(或者生成的时候报错:String literals in formulas can’t be bigger than 255 characters ASCII easyexcel),将下拉框的内容都存储在另一个新建的固定的sheet页...

    1、为了避免excel下拉框选项过多会导致内容不显示(或者生成的时候报错:String literals in formulas can’t be bigger than 255 characters ASCII easyexcel),将下拉框的内容都存储在另一个新建的固定的sheet页,再通过引用公式关联单元格的下拉框内容,从而形成能够存储多数值的下拉框。

    2、导出代码(这里演示的是一次性导出多个模板,采用压缩包的形式下载,并且表头是动态的):

    /**
         * 导出模板
         * @param response
         * @param businessViewId
         */
        @Override
        public void exportTemplate(HttpServletResponse response, String businessViewId) throws IOException {
            String[] split = businessViewId.split(",");
    
            String zipName = "模板.zip";
            response.setCharacterEncoding("utf-8");
            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
            response.setHeader("Content-Disposition", "attachment;filename*=UTF-8''" + URLEncoder.encode(zipName, "UTF-8"));
            ServletOutputStream out = response.getOutputStream();
            ZipOutputStream zipOutputStream = new ZipOutputStream(out);
    
            for (String viewid : split) {
    
                List<BusinessField> field = baseMapper.findBusinessFieldByViewId(viewid);
                //根据表id查询父表id
                String parentId = this.findParentIdByViewId(viewid);
                List<BusinessField> parentFieldList = baseMapper.findBusinessFieldByViewId(parentId);
                //定义表头
                List<List<String>> headList = new ArrayList<>();
                //定义数据体
                List<List<Object>> dataList = new ArrayList<>();
                // 指定标红色的列
                List<Integer> columns = Arrays.asList();
                // 指定批注
                HashMap<Integer, String> annotationsMap = new HashMap<>();
                HashMap<Integer, List<String>> dropDownMap = new HashMap<>();
                //主表字段
                for (int i = 0;i<parentFieldList.size();i++){
                    BusinessField businessField = parentFieldList.get(i);
                    headList.add(Lists.newArrayList(businessField.getName()));
                    if (StringUtils.isNotBlank(businessField.getControlType())){
                        if (businessField.getControlType().contains("select")){
                            List<String> tDataDictionaries = tDataDictionaryTempMapper.getNameByPid(businessField.getDictionary());
    //                        存储需要下拉框的值,这里的key是需要设置为下拉框的列数,value是下拉框的值,是list
                            if (tDataDictionaries != null && tDataDictionaries.size()>0) {
                                dropDownMap.put(i,tDataDictionaries);
                            }
                        }
                    }
                }
                //子表字段
                for (int i = 0;i<field.size();i++){
                    BusinessField businessField = field.get(i);
                    headList.add(Lists.newArrayList(businessField.getName()));
                    if (StringUtils.isNotBlank(businessField.getControlType())){
                        if (businessField.getControlType().contains("select")){
                            List<String> tDataDictionaries = tDataDictionaryTempMapper.getNameByPid(businessField.getDictionary());
    //                         存储需要下拉框的值,这里的key是需要设置为下拉框的列数,value是下拉框的值,是list
                            if (tDataDictionaries != null && tDataDictionaries.size()>0){
                                dropDownMap.put(i+parentFieldList.size(),tDataDictionaries);
                            }
                        }
                    }
                }
                ExcelWriter excelWriter = EasyExcel.write().excelType(ExcelTypeEnum.XLS).build();
                //构建一个sheet页
                WriteSheet writeSheet = EasyExcel.writerSheet("sheet1").build();
    //            TltleHandler titleHandler = new TltleHandler(columns, IndexedColors.RED.index,annotationsMap,dropDownMap);
    //            ExayExcelUtils.writeExcelWithModel(response.getOutputStream(), dataList, headList, "sheet1", (CellWriteHandler) titleHandler);
    // 头的策略
                WriteCellStyle headWriteCellStyle = new WriteCellStyle();
                // 单元格策略
                WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
                // 初始化表格样式
                HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
    // SelectSheetWriteHandler(dropDownMap)  是设置下拉框的类
                WriteTable writeTable = EasyExcel.writerTable(0).head(headList).registerWriteHandler(horizontalCellStyleStrategy).registerWriteHandler(new SelectSheetWriteHandler(dropDownMap)).needHead(Boolean.TRUE).build();
                excelWriter.write(dataList, writeSheet, writeTable);
                // 开始导出
    //            excelWriterSheetBuilder.doWrite(dataList);
                Workbook workbook = excelWriter.writeContext().writeWorkbookHolder().getWorkbook();
                //创建压缩文件
                String nameByid = baseMapper.getNameByid(viewid);
                ZipEntry zipEntry = new ZipEntry(nameByid+".xls");
                zipOutputStream.putNextEntry(zipEntry);
    
                //将excel对象以流的形式写入压缩流
                workbook.write(zipOutputStream);
    
            }
    
            zipOutputStream.flush();
            zipOutputStream.close();
    
        }
    

    3、设置下拉框的类:

    package com.customization.BusinessFilIdExcel.utils;
    
    import com.alibaba.excel.write.handler.SheetWriteHandler;
    import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
    import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
    import org.apache.poi.hssf.usermodel.HSSFDataValidation;
    import org.apache.poi.ss.usermodel.*;
    import org.apache.poi.ss.util.CellRangeAddressList;
    
    import java.util.List;
    import java.util.Map;
    
    public class SelectSheetWriteHandler implements SheetWriteHandler {
    
        private Map<Integer, List<String>> selectMap;
    
        private int index;
    
        private char[] alphabet = new char[]{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
                'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
    
        public SelectSheetWriteHandler(Map<Integer, List<String>> selectMap) {
            this.selectMap = selectMap;
            this.index = 0;
        }
    
        @Override
        public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
    
        }
    
        @Override
        public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
            if (selectMap == null || selectMap.size() == 0) {
                return;
            }
            // 需要设置下拉框的sheet页
            Sheet curSheet = writeSheetHolder.getSheet();
            DataValidationHelper helper = curSheet.getDataValidationHelper();
            String dictSheetName = "字典sheet";
    
            Workbook workbook = writeWorkbookHolder.getWorkbook();
    
            // 数据字典的sheet页
            Sheet dictSheet = workbook.createSheet(dictSheetName);
            // 从第二个工作簿开始隐藏,为了用户的友好性,将字典sheet隐藏掉
            this.index++;
            // 设置隐藏
            workbook.setSheetHidden(this.index, true);
            for (Map.Entry<Integer, List<String>> entry : selectMap.entrySet()) {
                // 设置下拉单元格的首行、末行、首列、末列
                CellRangeAddressList rangeAddressList = new CellRangeAddressList(1, 65533, entry.getKey(), entry.getKey());
                int rowLen = entry.getValue().size();
                // 设置字典sheet页的值 每一列一个字典项
                for (int i = 0; i < rowLen; i++) {
                    Row row = dictSheet.getRow(i);
                    if (row == null) {
                        row = dictSheet.createRow(i);
                    }
                    row.createCell(entry.getKey()).setCellValue(entry.getValue().get(i));
                }
                String excelColumn = getExcelColumn(entry.getKey());
                // 下拉框数据来源 eg:字典sheet!$B1:$B2
                String refers = dictSheetName + "!$" + excelColumn + "$1:$" + excelColumn + "$" + rowLen;
                // 创建可被其他单元格引用的名称
                Name name = workbook.createName();
                // 设置名称的名字
                name.setNameName("dict" + entry.getKey());
                // 设置公式
                name.setRefersToFormula(refers);
                // 设置引用约束
                DataValidationConstraint constraint = helper.createFormulaListConstraint("dict" + entry.getKey());
                // 设置约束
                DataValidation validation = helper.createValidation(constraint, rangeAddressList);
                if (validation instanceof HSSFDataValidation) {
                    validation.setSuppressDropDownArrow(false);
                } else {
                    validation.setSuppressDropDownArrow(true);
                    validation.setShowErrorBox(true);
                }
                // 阻止输入非下拉框的值
                validation.setErrorStyle(DataValidation.ErrorStyle.STOP);
                validation.createErrorBox("提示", "此值与单元格定义格式不一致!");
                // 添加下拉框约束
                writeSheetHolder.getSheet().addValidationData(validation);
            }
    
        }
    
        /**
         * 将数字列转化成为字母列
         *
         * @param num
         * @return
         */
        private String getExcelColumn(int num) {
            String column = "";
            int len = alphabet.length - 1;
            int first = num / len;
            int second = num % len;
            if (num <= len) {
                column = alphabet[num] + "";
            } else {
                column = alphabet[first - 1] + "";
                if (second == 0) {
                    column = column + alphabet[len] + "";
                } else {
                    column = column + alphabet[second - 1] + "";
                }
            }
            return column;
    
        }
    
    }
    

    4、效果如下:

    展开全文
  • 3. 操作步骤1)新建一张模板,如下图所示设计模板:2)下拉框的控件名为ceshi,数据字典选择自定义,如下图:注:要注意下拉框控件名称,在下面的js代码里面使用了控件名称调用该控件。3)A1单元格为显示图片的单元格,...

    3. 操作步骤

    1)新建一张模板,如下图所示设计模板:

    2)下拉框的控件名为ceshi,数据字典选择自定义,如下图:

    注:要注意下拉框控件名称,在下面的js代码里面使用了控件名称调用该控件。

    3)A1单元格为显示图片的单元格,单元格值为,是一个html显示图片的标签,故该单元格的内容显示方式需要选择为用HTML显示内容,选中单元格,在右侧的单元格属性表中选择单元格属性表-其他属性>显示内容,下拉框选择用HTML显示内容,单元格中图片默认显示翠鸟,如下图:

    注:要注意img标签的id,id要与下面的代码里面使用的id一致。

    4)点击模板>模板web属性>填报页面设置,为该模板添加一个加载结束事件,重写FineReport内置的点击下拉框按钮时下拉框数据初始化的方法。

    原来的初始化方法中传递了三个参数,为了增强参数可读性,重写的方法中,我们更改了三个参数名称,改成$dom,showValue,index,$dom是指获取当前对象,showValue是指获取下拉框选项的显示值,index是指下拉框选择的序号,从0开始。

    在原来的鼠标滑过事件中增加一个在固定单元格中显示对应图片的js,完整代码如下:

    注:由于重写了下拉框数据初始化的方法,增加的js中需要判断一下,下拉框名称是否为ceshi,也就是选择下拉框数据时,在单元格中显示对应图片的下拉框。

    具体js代码如下:

    FR.ComboBoxEditor.prototype.initContent=function ($dom, showValue, index) {

    if (showValue == null) {

    showValue = '';

    }

    var self = this;

    //初始化下拉框数据

    $dom.height(this.options.sonHeight)

    .attr("title",showValue)

    .text(showValue)

    .addClass(index > -1 ? 'fr-combo-list-item' : 'fr-combo-list-item fr-combo-list-item-noselect')

    .hover(function (e) {

    self.setFocusWithIndex(index);

    setTimeout(function (e) {

    if (!e) {

    return;

    }

    var target = $(e.target);

    if (self.$view[0].style.display != "none" && target.isChildAndSelfOf($(this).parent().children())) {

    $(this).removeClass("fr-combo-selected");

    }

    }, 10);

    //修改鼠标滑过下拉框数据时的事件,如果控件名为ceshi,那么就在id为img的单元格中显示路径为src的图片

    if(self.options.widgetName=="CESHI"){

    if(showValue!='不选'){

    $("#img").attr("src","http://localhost:8075/WebReport/page_demo/"+showValue+".png");}

    else

    $("#img").attr("src","http://localhost:8075/WebReport/page_demo/翠鸟.png");

    }

    })

    .click(function (e) {

    self.inList = true;

    self._setSelectedIndex(index > -1 ? index : self.getItemsLength());

    self._onEnterPressed();

    });

    }

    注:在上述代码中,src的路径为http://localhost:8075/WebReport/page_demo,故图片需要在该该路径下。

    注:图片名称需要与下拉框的显示值保持一致,注意是显示值,而非实际值。

    4. 预览效果

    4.1 PC端预览效果

    保存模板,选择填报预览,点击下拉框的下拉按钮,则会初始化下拉框数据,触发重写的事件,鼠标焦点放在某个数据上时,图片单元格上就会显示对应图片,实现效果如描述中所示。

    4.2 移动端预览效果

    注:经测试,移动端不支该js

    5. 已完成模板

    已完成的模板,可参见:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\JS\填报预览JS实例\55-鼠标滑过下拉框选项时在单元格中显示对应图片.cpt

    附件列表

    下载次数:0

    主题:

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持

    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮

    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201)

    展开全文
  • 就是下拉框里有两个值, 如果选择第一个,其下方则显示下拉框, 如果选择第二个,其下方则显示输入框。 谢谢啦
  • //生成下拉框内容 DataValidationHelper dvHelper = sheet.getDataValidationHelper(); DataValidationConstraint dvConstraint = dvHelper.createExplicitListConstraint(datas); DataValidation validation = ...
  • java中下拉框选项内容

    2021-02-13 00:24:25
    下拉框中的内容是数据库中表的内容,比如,“”张三","李四"sql中supplier中第一列supplierSimpleName123321(这是两行一列)在java中DAO层publicVectorfindsupplier(){Stringfindsu="...下拉框中的内容是数据库中表...
  • 下拉框选项左右移动

    2012-03-20 15:07:48
    两个下拉列表数据左右移动.(按“SHIFT、CTRL”可以多选项移动)
  • 巧妙解决element-ui下拉框选项过多的问题
  • 鼠标悬停在下拉框选项时,显示此选项的说明文字 。 分析 使用 @mouseover.native 触发显示消息框。 使用 @mouseout.native 关闭消息框 前端实现 消息框 <el-popover v-model="tooltipDisableFlag" placement=...
  • // 两个相同选项的值互斥 <el-select v-model="valueA" multiple placeholder="请选择" > <el-option v-for="item of zsSelect" :key="item.id" :label="item.name" :value="item.id" :...
  • Easyexcel导出带下拉框选项excel模板

    千次阅读 2022-01-05 17:14:46
    需求:导出的excel模板,表头字段动态生成、sheet页下拉框...解决思路:为了避免excel下拉框选项过多会导致内容不显示,将下拉框的内容都存储在另一个新建的固定的sheet页,再通过引用公司关联单元格的下拉框内容。 ...
  • 下拉框选中内容,<input>输入框显示相应内容。 实现 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ...
  • selenium (三) 下拉框选项操作

    千次阅读 2019-05-02 17:35:00
    可以先通过find_elements_by_xpath()获取到下拉框中的所有选项列表,然后在通过list元素进行click()来选择选项(这是我最初实现对下拉框操作的方式),也可以使用selenium自带的方法实现下拉框选项的操作。...
  • public void validateSelectLane() { try { Select select = new Select(driver.findElement(By.id("select"))); int number = select.getOptions().size();//下拉框选项个数 } ca...
  • 利用Axure的动态面板和中继器实现下拉框选项功能,文件为用例,可以结合文章和实际用例完成这个功能,方便产品经理在制作Axure原型图时完成一些简单的交互功能
  • 可搜索的下拉框选项

    2019-09-17 07:37:17
    在很多Form表单中,下拉框是很常见的组件,如果下拉框选项比较少,少于10个或者20个,都比较容易选择,如果说选项超过50个或者更多,想找到自己想要的选项就不容易了。如下图: 易客CRM 中有很多表单,...
  • EXCEL单元格中设置下拉框选项

    万次阅读 2018-09-30 16:11:31
    第三步:选择在下拉框里需要显示的数据,右键出现选项框,选择命名单元格区域 第四步:弹出的框里面的名称随便填,引用位置不变,=Sheet2!$A$2:$A$3要记下来,下面要用,最后点确定 第五步:回到shee...
  • 当组件在一屏内不会有什么问题,但是当弹出框超过一屏需要滚动时,select的下拉选项会出现错位,不在selcet组件上下,因为.ivu-select-dropdown自带的有 position:absolute的样式,所以我给它的上一级设置position: ...
  • js 设置某一区间段的时间,作为下拉框选项来用 比如:次日开始为期一周可选(7个选项值依次展示),样式为“2021-02-13”; function timeFormat(time) { // 时间格式化 2019-09-08 let year = time.getFullYear();...
  • layui select下拉框选项不显示

    千次阅读 2018-08-29 14:29:19
    刚开始接触layui框架 在开发过程中遇到了很多问题 现在整理一下 方便以后查阅 ...刚开始下拉框选项就是不显示 最后发现每次都忘记重新渲染下拉框 var form=layui.form; form.render("select");  ...
  • 参考别人文献 同时结合实际修改部分代码做出的一个可编辑的下拉框,并且修改过程同时会动态把没有的选项加入到下拉框
  • 这个功能是在下拉框选项里做的,下拉框的id要自己修改,鼠标悬浮在选项框里的选项,右侧出现一个信息框,信息框里的内容是两列 HTML内容这里是用的下拉框,因此要把悬浮框置顶z-index: 99999; 关键就是这3个函数*@...
  • // An highlighted block <div class="mrleft10 width60"> <el-select v-model="itemp.id" class="m-2" :filterable="true" @change="getSelect(index,itemp)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,274
精华内容 22,109
关键字:

下拉框选项

友情链接: PennCNV-1.0.3.zip