Как проверить наличие модального диалога - PullRequest
2 голосов
/ 31 мая 2019

У меня есть веб-страница с кнопкой для загрузки файла. После нажатия кнопки появляется всплывающее модальное диалоговое окно, в котором нет кнопок «ОК» или «Отмена», а просто информационное диалоговое окно «Генерация файла debuginfo. Пожалуйста, подождите.'. В моем тестировании пользовательского интерфейса мне нужно проверить наличие этого диалога. HTML-код для этого модального диалога приведен ниже. Как мне проверить наличие диалогового окна?

Я пытался использовать класс Alert и использовать Alert(driver).switch_to.alert() и Alert(driver).dismiss() и accept() Я также пытался

WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, "id_value")))

РЕДАКТИРОВАТЬ: отредактировано, чтобы добавить фактический код.

HTML-код для этого элемента имеет следующие параметры:

     <div class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-front ui-draggable ui-resizable" style="position: fixed; height: auto; width: 400px; top: 143px; left: 555.5px; display: block;" tabindex="-1" role="dialog" aria-describedby="dialog" aria-labelledby="ui-id-1">
      <div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">
      <span id="ui-id-1" class="ui-dialog-title">Download debug info</span>
      <button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only ui-dialog-titlebar-close" role="button" aria-disabled="false" title="close">
        <span class="ui-button-icon-primary ui-icon ui-icon-closethick">
        </span>
        <span class="ui-button-text">close</span>
      </button>
    </div>
    <div id="dialog" class="ui-dialog-content ui-widget-content" style="width: auto; min-height: 0px; max-height: none; height: 177px;">
      <br>Generating the debuginfo file. Please wait.</div>
      <div class="ui-resizable-handle ui-resizable-n" style="z-index: 90;">
      </div>
      <div class="ui-resizable-handle ui-resizable-e" style="z-index: 90;">
      </div>
      <div class="ui-resizable-handle ui-resizable-s" style="z-index: 90;">
      </div>
      <div class="ui-resizable-handle ui-resizable-w" style="z-index: 90;">
      </div>
      <div class="ui-resizable-handle ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se" style="z-index: 90;">
      </div>
      <div class="ui-resizable-handle ui-resizable-sw" style="z-index: 90;">
      </div>
      <div class="ui-resizable-handle ui-resizable-ne" style="z-index: 90;">
      </div>
      <div class="ui-resizable-handle ui-resizable-nw" style="z-index: 90;">

  </div>

1 Ответ

0 голосов
/ 31 мая 2019

Требуемый элемент имеет Модальное диалоговое окно , чтобы найти и извлечь текст элемента Генерация файла debuginfo. Пожалуйста, подождите. вы должны вызвать WebDriverWait для visibility_of_element_located(), и вы можете использовать любую из следующих стратегий локатора :

  • Использование CSS_SELECTOR:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.ui-dialog-content.ui-widget-content#dialog"))).get_attribute("innerHTML").split(">")[1])
    
  • Использование XPATH:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='ui-dialog-content ui-widget-content' and @id='dialog']"))).get_attribute("innerHTML").split(">")[1])
    
  • Примечание : Вы должны добавить следующий импорт:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
...