示例#1
0
        /// <summary>
        /// Реализует выполнение встроенных функций
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public bool run_inet_func(string name)
        {
            HtmlElement        htmlElem      = null;
            List <HtmlElement> htmlElem_list = null;
            string             res           = "";
            bool bl;

            int num_params = tableId.get_num_of_param(name);

            Lexem[] lex_arr = new Lexem[num_params];
            //в массиве лежат либо константы, либо переменные

            for (int i = num_params - 1; i >= 0; i--)
            {
                lex_arr[i] = args.Pop();
            }

            //switch по функциям
            switch (name)
            {
            case "click_by_id":
                wb.click_by_id(lex_arr[0].getName());
                break;

            case "check_by_id":
                bl  = wb.check_by_id(lex_arr[0].getName());
                res = getValueFromBool(bl);
                break;

            case "input_by_id":
                wb.input_by_id(lex_arr[0].getName(), lex_arr[1].getName());
                break;

            case "go":
                wb.go(lex_arr[0].getName());
                break;

            case "check_by_text":
                bl  = wb.check_by_text(lex_arr[0].getName());
                res = getValueFromBool(bl);
                break;

            case "set_options":
                wb.set_options(lex_arr[0].getName());
                break;

            case "click_href":
                wb.click_href(lex_arr[0].getName());
                break;

            case "click_by_text":
                wb.click_by_text(lex_arr[0].getName());
                break;

            case "set_check_box_flag":
                wb.set_check_box_flag(lex_arr[0].getName(), getBoolFromValue(lex_arr[1]));
                break;

            case "click_check_box_flag":
                wb.click_check_box_flag(lex_arr[0].getName());
                break;

            case "click_elem":
                wb.click_elem(tableId.get_htmlElem_of_lex(lex_arr[0].getName()));
                break;

            //----------------------
            case "get_tree":
                htmlElem_list = wb.get_tree(lex_arr[0].getName());
                break;

            case "get_elements_by_tag":
                htmlElem_list = wb.get_elements_by_tag(lex_arr[0].getName());
                break;

            case "get_elements_by_attr_value":
                htmlElem_list = wb.get_elements_by_attr_value(lex_arr[0].getName(), lex_arr[1].getName());

                break;

            case "save":
                htmlElem = tableId.get_htmlElem_of_lex(lex_arr[0].getName());
                //res = wb.save(htmlElem, lex_arr[1].getName());
                wb.save(htmlElem, lex_arr[1].getName());
                break;

            case "saveHTML":
                htmlElem = tableId.get_htmlElem_of_lex(lex_arr[0].getName());
                //res = wb.saveHTML(htmlElem, lex_arr[1].getName());
                wb.saveHTML(htmlElem, lex_arr[1].getName());
                break;

            case "save_images":
                htmlElem = tableId.get_htmlElem_of_lex(lex_arr[0].getName());
                wb.save_images(htmlElem, lex_arr[0].getName());
                break;

            //-------------------------
            case "get_element_with_num":
                htmlElem = tableId.get_htmlElemCollect_of_lex(lex_arr[0].getName())[Convert.ToInt32(lex_arr[1].getName())];
                break;

            case "get_length":
                res = tableId.get_htmlElemCollect_of_lex(lex_arr[0].getName()).Count.ToString();
                break;

            case "input_elem":
                wb.input_elem(tableId.get_htmlElem_of_lex(lex_arr[0].getName()), lex_arr[1].getName());
                break;

            case "set_check_box_elem":
                wb.set_check_box_elem(tableId.get_htmlElem_of_lex(lex_arr[0].getName()), getBoolFromValue(lex_arr[1]));
                break;

            case "set_options_elem":
                wb.set_options_elem(tableId.get_htmlElem_of_lex(lex_arr[0].getName()), lex_arr[1].getName());
                break;

            case "wait":
                wb.wait(Convert.ToInt32(lex_arr[0].getName()));
                break;

            case "go_back":
                wb.go_back();
                break;

            default:
                break;
            }
            Type_of_lex type = tableId.getTypeOfFunc(name);

            if (type != Type_of_lex._void)
            {
                if (type == Type_of_lex._htmlelement || type == Type_of_lex._htmlelementcollect)
                {
                    res = add_new_uniq_lexId(type, htmlElem, htmlElem_list);
                }
                args.Push(new Lexem(type, res));
            }
            //cur_step_poliz++;
            return(tableId.get_has_event_func(name));
        }