Селен IDE пытается получить маржинальное значение - PullRequest
3 голосов
/ 02 июля 2011

Я пытаюсь получить значение нижнего поля элемента на моей странице. На странице есть поле выбора, которое позволяет посетителю регулировать нижнее поле элемента. Я хочу создать скрипт, который изменяет значение и затем проверяет, что нижнее поле было изменено. Я сделал то же самое с параметром высоты, но для этого есть конкретное утверждение. Как мне получить доступ к нижнему полю?

Я пробовал assertAtribute elementid@style

но это только дает весь стиль, который включает в себя другие значения.

Я включил свой скрипт высоты ниже, хотя он мне не сильно помог

<tr>
    <td>select</td>
    <td>headerHeightSet</td>
    <td>label=100</td>
</tr>
<tr>
    <td>storeSelectedValue</td>
    <td>headerHeightSet</td>
    <td>topMarginValue</td>
</tr>
<tr>
    <td>assertElementHeight</td>
    <td>wemakeSheetHeaderJpg</td>
    <td>${topMarginValue}</td>
</tr>

1 Ответ

1 голос
/ 07 августа 2011

Да, команда "storeAttribute" работает не очень хорошо, из того, что я нашел. Я нашел несколько разных способов сделать это, но я думаю, что использование пользовательских расширений - лучший способ.

HTML:

<html>
<head>

    <script src="jquery-1.6.2.js"></script>

    <style type="text/css">
        body
        {
            margin:0px 0px 0px 0px;
        }

        .customDiv
        {
            border-style:solid;
            border-color: green;
            margin: 5px 50px 10px 0px; /* top bottom right left */
            margin-color: black;
            background-color: red;
            padding: 50px 50px 50px 50px;
        }

    </style>

    <script>
        $(document).ready(function() {

            jQuery("#BottomMarginSelect").change(function() {
                jQuery("#CustomDiv").css("margin-bottom",jQuery("#BottomMarginSelect").val());
                //alert(jQuery("#CustomDiv").css("margin-bottom"));
            });
        });
    </script>


    </head>

<body>

<div id="CustomDiv" class="customDiv">
text in div
</div>--- bottom margin of div ends here (100px below green div border); margin is always transparent ----

<br />
<br />
<b>Select the bottom margin of the div:<b><br />
<select id="BottomMarginSelect">
    <option value="10px">10px</option>
    <option value="20px">20px</option>
    <option value="30px">30px</option>
</select>
</body>
</html>

Создайте файл с именем "user-extensions.js" и поместите в него этот код:

Selenium.prototype.doStoreStyleAttribute = function(locator) {
       var val = selenium.browserbot.getCurrentWindow().document.getElementById(locator).style.marginBottom;
       this.doStore(val,"var_style_attribute_from_custom_command");
}; 

Установить файл пользовательских расширений в Selenium-IDE:

Параметры> Параметры>

enter image description here

Команды Selenium:

<tr>
    <td>select</td>
    <td>id=BottomMarginSelect</td>
    <td>label=10px</td>
</tr>
<tr>
    <td>storeSelectedLabel</td>
    <td>id=BottomMarginSelect</td>
    <td>var_BottomMarginSelect_select_option_selected_text</td>
</tr>
<tr>
    <td>echo</td>
    <td>${var_BottomMarginSelect_select_option_selected_text}</td>
    <td></td>
</tr>
<tr>
    <td>storeStyleAttribute</td>
    <td>CustomDiv</td>
    <td></td>
</tr>
<tr>
    <td>echo</td>
    <td>${var_style_attribute_from_custom_command}</td>
    <td></td>
</tr>
<tr>
    <td>assertExpression</td>
    <td>${var_style_attribute_from_custom_command}</td>
    <td>${var_BottomMarginSelect_select_option_selected_text}</td>
</tr>
<tr>
    <td>storeText</td>
    <td>//div[@id='CustomDiv']/@style</td>
    <td>var_style_attribute_from_id</td>
</tr>
<tr>
    <td>echo</td>
    <td>${var_style_attribute_from_id}</td>
    <td></td>
</tr>
<tr>
    <td>storeText</td>
    <td>//div[@class='customDiv']/@style</td>
    <td>var_style_attribute_from_class</td>
</tr>
<tr>
    <td>echo</td>
    <td>${var_style_attribute_from_class}</td>
    <td></td>
</tr>
<tr>
    <td>storeAttribute</td>
    <td>CustomDiv@style</td>
    <td>var_style_attribute_from_storeAttribute</td>
</tr>
<tr>
    <td>echo</td>
    <td>${var_style_attribute_from_storeAttribute}</td>
    <td></td>
</tr>

Выход:

  • [info] Выполнение: | выбрать | id = BottomMarginSelect | label = 10px |
  • [info] Выполнение: | storeSelectedLabel | id = BottomMarginSelect | var_BottomMarginSelect_select_option_selected_text |
  • [info] Выполнение: | echo | $ {var_BottomMarginSelect_select_option_selected_text} | |
  • [info] echo: 10px
  • [info] Выполнение: | storeStyleAttribute | CustomDiv | |
  • [info] Выполнение: | echo | $ {var_style_attribute_from_custom_command} | |
  • [info] echo: 10px
  • [info] Выполнение: | assertExpression | $ {var_style_attribute_from_custom_command} | $ {var_BottomMarginSelect_select_option_selected_text} |
  • [info] Выполнение: | storeText | // div [@ id = 'CustomDiv'] / @ style | var_style_attribute_from_id |
  • [info] Выполнение: | echo | $ {var_style_attribute_from_id} | |
  • [info] echo: margin-bottom: 10px;
  • [info] Выполнение: | storeText | // div [@ class = 'customDiv'] / @ style | var_style_attribute_from_class |
  • [info] Выполнение: | echo | $ {var_style_attribute_from_class} | |
  • [info] echo: margin-bottom: 10px;
  • [info] Выполнение: | storeAttribute | CustomDiv @ стиль | var_style_attribute_from_storeAttribute |
  • [info] Выполнение: | echo | $ {var_style_attribute_from_storeAttribute} | |
  • [info] echo: margin-bottom: 10px;
...