2016-03-30 2 views
0

Так что, обновляясь с DevExpress до DevExtreme, DE, похоже, ушел с пути, чтобы заблокировать любой механизм автоматизации, но свой. Выбранные блоки создаются как слой пользовательских тегов DIV с тегом ввода только для чтения в середине. Когда выбрано, раскрывающийся список создается как структура списка DIV, привязанная к/body/уровню источника страницы. Этот список выгружается, когда раскрывающийся список закрывается. Waitr может видеть и взаимодействовать со списком при первом его появлении на странице, но как только он выгружается, я не могу его снова найти. Я пробовал ссылки на объекты страницы, собственные динамические ссылки Watir, ничего не работает. Интересно, что я не получаю общую «больше не привязанную к DOM» ошибку, просто пустую строку. Все обходные пути от DevExpress деактивированы или заблокированы.DevExtreme выпадающие списки и Watir

Кто-нибудь нашел способ автоматизировать эти элементы управления, кроме открытых вызовов JS?

Select Box:

<div class="dx-texteditor dx-dropdowneditor-button-visible dx-widget dx-textbox dx-dropdowneditor-field-clickable dx-dropdowneditor dx-selectbox dx-validator dx-visibility-change-handler" id="Active_Y_or_N" typeof="drpdown" validations="[{&quot;type&quot;:&quot;required&quot;}]" value="1" items="[{&quot;Value&quot;:1.0,&quot;Text&quot;:&quot;Yes&quot;,&quot;DropDownType&quot;:&quot;Active Y or N&quot;},{&quot;Value&quot;:2.0,&quot;Text&quot;:&quot;No&quot;,&quot;DropDownType&quot;:&quot;Active Y or N&quot;}]" originalvalue="1"> 
    <div onclick="void(0)" class="dx-dropdowneditor-input-wrapper dx-selectbox-container"> 
     <div class="dx-texteditor-container"> 
      <input id="Active_Y_or_N_1" aria-expanded="false" role="combobox" tabindex="0" spellcheck="false" readonly="" aria-autocomplete="list" aria-haspopup="true" autocomplete="off" class="dx-texteditor-input" type="text"> 
      <div class="dx-placeholder dx-state-invisible" data-dx_placeholder="Select..."></div> 
      <div class="dx-texteditor-buttons-container"> 
       <div role="button" onclick="void(0)" class="dx-widget dx-button-normal dx-dropdowneditor-button"> 
       <div class="dx-dropdowneditor-icon"></div> 
      </div> 
     </div> 
    </div> 
</div> 

Список:

<div style="width: 212px; height: 61px; z-index: 1001; margin: 0px; left: 0px; top: 0px; transform: translate(264px, 365px); transition: none 0s ease 0s ; visibility: visible; opacity: 1;" class="dx-overlay-content dx-popup-normal dx-popup-draggable dx-resizable"> 
    <div style="height: 60px;" id="2ceea1a1-35ca-5e1d-72c1-17ca0c70daa9" class="dx-popup-content"> 
     <div aria-activedescendant="3cc4c726-d65a-4248-b16c-6cd8ed666d08" tabindex="-1" role="listbox" class="dx-scrollable dx-scrollview dx-scrollable-customizable-scrollbars dx-scrollable-vertical dx-scrollable-simulated dx-visibility-change-handler dx-list dx-widget dx-collection" id="2779756d-884a-7d65-dd53-5ab194255698"> 
      <div class="dx-scrollable-container"> 
       <div style="transform: translate(0px, 0px);" class="dx-scrollable-content"> 
        <div class="dx-scrollview-top-pocket"> 
         <div style="display: none;" class="dx-scrollview-pull-down"> 
          <div class="dx-scrollview-pull-down-image"></div> 
          <div class="dx-scrollview-pull-down-indicator"> 
           <div class="dx-loadindicator dx-widget"> 
            <div class="dx-loadindicator-wrapper"> 
             <div class="dx-loadindicator-content"> 
              <div class="dx-loadindicator-icon"> 
               <div class="dx-loadindicator-segment dx-loadindicator-segment7"></div> 
               <div class="dx-loadindicator-segment dx-loadindicator-segment6"></div> 
               <div class="dx-loadindicator-segment dx-loadindicator-segment5"></div> 
               <div class="dx-loadindicator-segment dx-loadindicator-segment4"></div> 
               <div class="dx-loadindicator-segment dx-loadindicator-segment3"></div> 
               <div class="dx-loadindicator-segment dx-loadindicator-segment2"></div> 
               <div class="dx-loadindicator-segment dx-loadindicator-segment1"></div> 
               <div class="dx-loadindicator-segment dx-loadindicator-segment0"></div> 
              </div> 
             </div> 
             <div class="dx-loadindicator-content"></div> 
            </div> 
           </div> 
          </div> 
          <div class="dx-scrollview-pull-down-text"> 
           <div style="opacity: 1;">Pull down to refresh...</div> 
           <div style="opacity: 0;">Release to refresh...</div> 
           <div style="opacity: 0;">Refreshing...</div> 
          </div> 
         </div> 
        </div> 
       <div onclick="void(0)" class="dx-scrollview-content"> 
        <div id="3cc4c726-d65a-4248-b16c-6cd8ed666d08" aria-selected="false" role="option" class="dx-item dx-list-item dx-state-focused"> 
         <div class="dx-item-content dx-list-item-content">Yes</div> 
        </div> 
        <div aria-selected="false" role="option" class="dx-item dx-list-item"> 
         <div class="dx-item-content dx-list-item-content">No</div> 
        </div> 
       </div> 
       <div class="dx-scrollview-bottom-pocket"> 
        <div style="display: none;" class="dx-scrollview-scrollbottom"> 
        <div class="dx-scrollview-scrollbottom-indicator"> 
         <div class="dx-loadindicator dx-widget"> 
          <div class="dx-loadindicator-wrapper"> 
           <div class="dx-loadindicator-content"> 
            <div class="dx-loadindicator-icon"> 
             <div class="dx-loadindicator-segment dx-loadindicator-segment7"></div> 
             <div class="dx-loadindicator-segment dx-loadindicator-segment6"></div> 
             <div class="dx-loadindicator-segment dx-loadindicator-segment5"></div> 
             <div class="dx-loadindicator-segment dx-loadindicator-segment4"></div> 
             <div class="dx-loadindicator-segment dx-loadindicator-segment3"></div> 
             <div class="dx-loadindicator-segment dx-loadindicator-segment2"></div> 
             <div class="dx-loadindicator-segment dx-loadindicator-segment1"></div> 
             <div class="dx-loadindicator-segment dx-loadindicator-segment0"></div> 
            </div> 
           </div> 
           <div class="dx-loadindicator-content"> 
          </div> 
         </div> 
        </div> 
       </div> 
       <div class="dx-scrollview-scrollbottom-text">Loading...</div> 
      </div> 
     </div> 
    </div> 
    <div style="display: none;" class="dx-scrollable-scrollbar dx-widget dx-scrollbar-vertical dx-scrollbar-hoverable"> 
     <div style="transform: translate(0px, 0px); height: 58px;" class="dx-scrollable-scroll dx-state-invisible"> 
      <div class="dx-scrollable-scroll-content"></div> 
     </div> 
    </div> 
</div> 
<div class="dx-scrollview-loadpanel dx-overlay dx-widget dx-visibility-change-handler dx-state-invisible dx-loadpanel"> 
    <div aria-hidden="true" style="width: 222px; height: 90px;" class="dx-overlay-content"></div> 
</div>  

код (одна версия в любом случае):

self.send("#{field}_element").div(:class => 'dx-dropdowneditor-icon').click 
drpdwn = @browser.div(:class => 'dx-scrollview-content') 
if drpdwn.text.include? value 
    drpdwn.div(:text => value).click 
else 
    fail "value (#{value}) not found in list (#{self.drop_list_element.text})" 
end 
+0

Во второй загрузке списка Watir может видеть это как существующий, но не видимый. –

+1

Это поможет привести пример управления, с которым вы работаете, и код, воспроизводящий проблему. Watir может работать с выпадающими списками DevExtreme (как вы видели в [моем сообщении в блоге] (https://jkotests.wordpress.com/2016/03/11/unhiding-the-overflowhidden-in-devextreme-select-lists/)) , Этот пример очень помог бы уточнить, где находится точная проблема. –

+0

Джастин, я использовал ваш пример кода как одну из моих попыток. он имел такие же результаты, как упоминалось выше. –

ответ

0

Это очень трудно ответить, потому что я не могу видеть ваши кода, и у меня нет примера. Возможно, это неправильный ответ. Но если ваше сообщение:

При второй загрузке списка Watir может видеть это как существующий, но не видимый.

Правильно. Затем вы можете заставить watir работать с непонятными элементами, используя:

browser.hidden(id: "your_element").click 

Попробуйте пожалуйста.

+0

Antesser, Спасибо, но это не работает, по двум причинам, которые я вижу. 1, эта команда ищет тег Input, я работаю с DIV. 2, у div нет/hidden/tag или property, у Watir есть проблемы с его доступом, поскольку он был выгружен из источника и перезагружен. –

+0

Ну. Кажется, я не могу помочь в этом случае. Удачи. – Antesser

Смежные вопросы