Выбор radiobutton, который доступен после выполнения javascript

#javascript #automation #robotframework

#javascript #автоматизация #robotframework

Вопрос:

Мой тестовый пример — записаться на прием. Проблема в том, что требуемая radiobutton, которую я должен выбрать (обязательная для формы), доступна через функцию javascript getTimeSlots()

Вот консоль webdeveloper с функцией и выводом введите описание изображения здесь

И здесь консоль webdeveloper показывает мне кнопки radiobutton на странице назначения введите описание изображения здесь

Насколько я понимаю, я захожу на страницу назначения, запускаю javascript, выбираю кнопку radiobutton и отправляю форму. Но это не работает.

 Book appointment
    [Tags]  appointment
    Input Text  id:foo  here is bar
    Input Text  id:bar  here is more bar
    Click Element  id:requested_date
    # Get date out of the datepicker
    ${current_date_noon} =  Get Current Date  result_format=%Y-%m-%d 00:00:00
    ${date_in_7d} =  Add Time To Date  ${current_date_noon}  7 days
    ${unixtime} =  get time  epoch  ${date_in_7d}
    ${data_format} =  Set Variable  ${unixtime}000
    Click Element    xpath=//td[@data-date="${data_format}"]

    # FIXME Here I try to select the radiobutton
    Execute Javascript  window.getTimeSlots()
    #Select Radio button  requested_time  19:00 - 19:30
    Click Element  name:requested_time
    Capture Page Screenshot  Screenshot-termin-buchen-{index}.png
    Submit Form
  

Когда я запускаю код, я получаю следующий результат в консоли

 ------------------------------------------------------------------------------
Book appointment                                                      | FAIL |
StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
  (Session info: chrome=72.0.3626.109)
  (Driver info: chromedriver=2.42.591071 (0b695ff80972cc1a65a5cd643186d2ae582cd4ac),platform=Linux 4.9.49-moby x86_64)
------------------------------------------------------------------------------
  

Как я могу использовать robotframework для выбора этой radiobutton?

Ответ №1:

Ну, есть несколько причин, по которым появляется эта ошибка. В общем случае это означает, что состояние DOM изменилось между взаимодействиями. Поскольку ключевые слова SeleniumLibrary 3.3, начинающиеся с Wait Until , не завершаются ошибкой из-за этой ошибки. Вы могли бы попробовать дождаться появления элемента и только после этого щелкнуть по нему.