Механизировать проверку всех переключателей перед отправкой формы - PullRequest
0 голосов
/ 02 марта 2020

Для школьного проекта я пытаюсь разобраться в содержании вопросов с несколькими вариантами ответов (для изучения французских SAT. снимок экрана с веб-страницей, которую я хочу удалить

Мой скребок работает. Однако на странице используются javascript, чтобы получить первые 5 вопросов, затем вам нужно ответить на каждый вопрос и нажать следующую кнопку, после чего у вас есть доступ к 5-10 вопросам.

В инспекторе Я сравнил два html do c (до и после нажатия кнопки RadioButtons + Next), я поместил оба файла в конце поста (первый html do c имеет вид type = "get", в то время как второй имеет форму типа "post")

Таким образом, я использовал gem Mechanize и попытался нажать на все входы, а затем на кнопку. К сожалению, это не работает, и мне кажется, иметь один и тот же файл html до и после запуска моего кода с использованием Mechanize.

require 'open-uri'
require 'nokogiri'
require 'json'
require 'mechanize'

url = 'https://www.letudiant.fr/quiz/bac/histoire-geographie/quiz-bac-histoire-geographie-l-es-s-l-asie-du-sud-et-de-l-est-les-enjeux-de-la-croissance/question.html'

agent = Mechanize.new
page = agent.get(url)
form = agent.page.form_with(:class => "c-form")
form.radiobuttons.each do |button|
  button.check
end

# check if button.checked?
puts "============"
form.radiobuttons.each do |button|
  puts button.checked?
end
puts "============"


puts "************"

page = agent.submit(form)
puts page.parser.text
puts "************"

Это возвращает это в консоли: это означает, что Mechanize нажимал на каждую радиокнопку (каждый вопрос имеет 3 радиокнопки, таким образом, Mechan ize нажимает на все из них, но только последний оставался нажатым (для каждого вопроса), объясняя повторение ложного - ложного - истинного для каждого вопроса) как здесь

============
false
false
true
false
false
true
false
false
true
false
false
true
false
false
true
============
************
#<Mechanize::Page:0x00007fb942c50e38>




        Test Quiz Bac L/ES/S - Histoire-Géographie  - L'Asie du Sud et de l'Est - L'Etudiant




                                                                       Quiz  Bac        Quiz Bac L/ES/S - Histoire-Géographie - L'Asie du Sud et de l'Est                Étape 1         Étape 2                 1) Mumbai est :              Veuillez sélectionner une réponse.                a) la capitale politique de l’Union indienne.               b) la capitale économique et culturelle de l’Union indienne.               c) la capitale culturelle de l’Union indienne.                 2) Que sont les slums ?              Veuillez sélectionner une réponse.                a) Le nom des bidonvilles en Inde.               b) Le nom des quartiers aisés en Inde.               c) Le nom des décharges en Inde.                 3) Comment évolue la population de l’agglomération de Mumbai ?              Veuillez sélectionner une réponse.                a) Une croissance lente.               b) Une stagnation.               c) Une croissance rapide.                 4) Quelle est la part de la population de l’Asie du Sud et de l’Est dans la population mondiale ?              Veuillez sélectionner une réponse.                a) 2/3.               b) 1/4.               c) 1/2.                 5) Que signifie « PMA » ?              Veuillez sélectionner une réponse.                a) Pays mal avancés.               b) Pays les moins avancés.               c) Pays mal adaptés.                            
 ##################
Attention ! Veuillez répondre à toutes les questions.
#######################
                          Étape suivante                                                                          Articles les plus lus              Bac S 2018 : tous les sujets et corrigés               Grand oral du nouveau bac : ce qui vous attend               On connaît la liste des œuvres au programme du bac de français 2020               Pourquoi prendre latin ou grec en option en terminale ?               Complémentaires ou expertes, à quoi ressembleront les options maths en terminale ?               Bac STMG 2018 : tous les sujets et corrigés               Nouveau bac : vous aurez les résultats des E3C le 15 mars               Que se passera-t-il si vous ratez votre bac en 2020 ?               Bac 2019 : les citations à (bien) utiliser à l’épreuve de philo               E3C : ce que vous risquez si vous les manquez           window._taboola = window._taboola || [];  _taboola.push({  mode: 'thumbnails-right-rail',  container: 'taboola-right-rail-thumbnails',  placement: 'Right Rail Thumbnails',  target_type: 'mix'  });                                 

                            Quiz Bac L/ES/S - Histoire-Géographie  - L'Asie du Sud et de l'Est                        

************

Предложение "Внимание! Veuillez répondre à toutes les questions. «Между ###### в консоли означает, что Mechanize пытался отправить форму, но не нажимал на каждую радиокнопку Как здесь, когда я пытаюсь кликать, не нажимая на радиокнопки

Вот код (найден в инспекторе) перед нажатием на каждую радиокнопку и нажатием следующей кнопки:

<form class="c-form has-error" method="post" data-frm="quiz" data-frm-legacy-final-step-action="/test/quiz/validation.html?time=1583184886" data-frm-init="1">
   <div data-sln-scrollnav="" data-eng-scrollable="" class="c-scrollnav has-more-on-right">
      <nav class="c-simple-nav c-scrollnav__scroller" data-sln-scroller="">
         <ul class="  c-simple-nav__list  c-simple-nav__list--progress " data-sln-inner="">
            <li class="c-simple-nav__item">  <a class="  c-simple-nav__link  is-active is-clickable " href="#" data-frm-legacy-multi-step="Etape 1">  Étape 1 </a>  </li>
            <li class="c-simple-nav__item">  <a class="  c-simple-nav__link  " href="#" data-frm-legacy-multi-step="Etape 2">  Étape 2 </a>  </li>
         </ul>
      </nav>
   </div>
   <ol class="c-quiz__question-list">
      <li class="c-quiz-question has-error" data-frm-validate="[ 'required' ]">
         <h5 class="c-quiz-question__title">  1) Mumbai est : </h5>
         <div class="c-block-error">
            <div class="c-block-error__title">
               <div class="c-block-bubble c-block-bubble--error">
                  <svg class="c-icon-svg" aria-hidden="true">
                     <use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
                  </svg>
               </div>
               Veuillez sélectionner une réponse.  
            </div>
         </div>
         <div class="c-quiz-question__options">
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21887" value="66881">   <span class="c-radio-label__label">  a) la capitale politique de l’Union indienne. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21887" value="66883">   <span class="c-radio-label__label">  b) la capitale économique et culturelle de l’Union indienne. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21887" value="66885">   <span class="c-radio-label__label">  c) la capitale culturelle de l’Union indienne. </span>   
               <div class="c-radio__indicator"></div>
            </label>
         </div>
      </li>
      <li class="c-quiz-question has-error" data-frm-validate="[ 'required' ]">
         <h5 class="c-quiz-question__title">  2) Que sont les slums ? </h5>
         <div class="c-block-error">
            <div class="c-block-error__title">
               <div class="c-block-bubble c-block-bubble--error">
                  <svg class="c-icon-svg" aria-hidden="true">
                     <use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
                  </svg>
               </div>
               Veuillez sélectionner une réponse.  
            </div>
         </div>
         <div class="c-quiz-question__options">
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21889" value="66887">   <span class="c-radio-label__label">  a) Le nom des bidonvilles en Inde. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21889" value="66889">   <span class="c-radio-label__label">  b) Le nom des quartiers aisés en Inde. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21889" value="66891">   <span class="c-radio-label__label">  c) Le nom des décharges en Inde. </span>   
               <div class="c-radio__indicator"></div>
            </label>
         </div>
      </li>
      <li class="c-quiz-question has-error" data-frm-validate="[ 'required' ]">
         <h5 class="c-quiz-question__title">  3) Comment évolue la population de l’agglomération de Mumbai ? </h5>
         <div class="c-block-error">
            <div class="c-block-error__title">
               <div class="c-block-bubble c-block-bubble--error">
                  <svg class="c-icon-svg" aria-hidden="true">
                     <use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
                  </svg>
               </div>
               Veuillez sélectionner une réponse.  
            </div>
         </div>
         <div class="c-quiz-question__options">
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21891" value="66893">   <span class="c-radio-label__label">  a) Une croissance lente. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21891" value="66895">   <span class="c-radio-label__label">  b) Une stagnation. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21891" value="66897">   <span class="c-radio-label__label">  c) Une croissance rapide. </span>   
               <div class="c-radio__indicator"></div>
            </label>
         </div>
      </li>
      <li class="c-quiz-question has-error" data-frm-validate="[ 'required' ]">
         <h5 class="c-quiz-question__title">  4) Quelle est la part de la population de l’Asie du Sud et de l’Est dans la population mondiale ? </h5>
         <div class="c-block-error">
            <div class="c-block-error__title">
               <div class="c-block-bubble c-block-bubble--error">
                  <svg class="c-icon-svg" aria-hidden="true">
                     <use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
                  </svg>
               </div>
               Veuillez sélectionner une réponse.  
            </div>
         </div>
         <div class="c-quiz-question__options">
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21893" value="66899">   <span class="c-radio-label__label">  a) 2/3. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21893" value="66901">   <span class="c-radio-label__label">  b) 1/4. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21893" value="66903">   <span class="c-radio-label__label">  c) 1/2. </span>   
               <div class="c-radio__indicator"></div>
            </label>
         </div>
      </li>
      <li class="c-quiz-question has-error" data-frm-validate="[ 'required' ]">
         <h5 class="c-quiz-question__title">  5) Que signifie « PMA » ? </h5>
         <div class="c-block-error">
            <div class="c-block-error__title">
               <div class="c-block-bubble c-block-bubble--error">
                  <svg class="c-icon-svg" aria-hidden="true">
                     <use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
                  </svg>
               </div>
               Veuillez sélectionner une réponse.  
            </div>
         </div>
         <div class="c-quiz-question__options">
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21895" value="66905">   <span class="c-radio-label__label">  a) Pays mal avancés. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21895" value="66907">   <span class="c-radio-label__label">  b) Pays les moins avancés. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21895" value="66909">   <span class="c-radio-label__label">  c) Pays mal adaptés. </span>   
               <div class="c-radio__indicator"></div>
            </label>
         </div>
      </li>
   </ol>
   <div class="c-form__errors">
      <div class="c-block-error">
         <div class="c-block-error__title">
            <div class="c-block-bubble c-block-bubble--error">
               <svg class="c-icon-svg" aria-hidden="true">
                  <use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
               </svg>
            </div>
            Attention ! Veuillez répondre à toutes les questions.  
         </div>
      </div>
   </div>
   <input type="hidden" data-frm-legacy-multi-step-input="" name="step">  <input type="hidden" name="previousStep" value="">  <input type="hidden" name="nextStep" value="2">  <input type="hidden" name="idOrigine" value="1">  <input type="hidden" name="legacyFinalStepAction" value="/quiz/bac/histoire-geographie/quiz-bac-histoire-geographie-l-es-s-l-asie-du-sud-et-de-l-est-les-enjeux-de-la-croissance/conclusion.html?time=1583184886" ?="">   
   <div class="c-quiz__actions">
      <button class="c-button c-button--medium c-button--rounded c-button--light-border u-themed is-active u-typo--upper" type="button" data-frm-legacy-multi-step="next">
         <span>Étape suivante</span>  
         <svg class="c-icon-svg">
            <use xlink:href="/svg/etu.sprite.svg#icon-chevron-right"></use>
         </svg>
      </button>
   </div>
</form>

Вот код html, который я хочу получить (найдено в инспекторе после нажатия на каждую радиокнопку и нажатия на следующую кнопку:

<form class="c-form" method="post" data-frm="quiz" data-frm-legacy-final-step-action="/test/quiz/validation.html?time=1583187387" data-frm-init="1">
   <div data-sln-scrollnav="" data-eng-scrollable="" class="c-scrollnav has-more-on-right">
      <nav class="c-simple-nav c-scrollnav__scroller" data-sln-scroller="">
         <ul class="  c-simple-nav__list  c-simple-nav__list--progress " data-sln-inner="">
            <li class="c-simple-nav__item">  <a class="  c-simple-nav__link  is-clickable " href="#" data-frm-legacy-multi-step="Etape 1">  Étape 1 </a>  </li>
            <li class="c-simple-nav__item">  <a class="  c-simple-nav__link  is-active is-clickable " href="#" data-frm-legacy-multi-step="Etape 2">  Étape 2 </a>  </li>
         </ul>
      </nav>
   </div>
   <ol class="c-quiz__question-list">
      <li class="c-quiz-question" data-frm-validate="[ 'required' ]">
         <h5 class="c-quiz-question__title">  6) Parmi ces trois États, quel est celui dont la population croît la plus vite ? </h5>
         <div class="c-block-error">
            <div class="c-block-error__title">
               <div class="c-block-bubble c-block-bubble--error">
                  <svg class="c-icon-svg" aria-hidden="true">
                     <use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
                  </svg>
               </div>
               Veuillez sélectionner une réponse.  
            </div>
         </div>
         <div class="c-quiz-question__options">
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21897" value="66911">   <span class="c-radio-label__label">  a) L’Inde. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21897" value="66913">   <span class="c-radio-label__label">  b) Le Japon. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21897" value="66915">   <span class="c-radio-label__label">  c) La Chine. </span>   
               <div class="c-radio__indicator"></div>
            </label>
         </div>
      </li>
      <li class="c-quiz-question" data-frm-validate="[ 'required' ]">
         <h5 class="c-quiz-question__title">  7) Lequel de ces États est une démocratie ? </h5>
         <div class="c-block-error">
            <div class="c-block-error__title">
               <div class="c-block-bubble c-block-bubble--error">
                  <svg class="c-icon-svg" aria-hidden="true">
                     <use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
                  </svg>
               </div>
               Veuillez sélectionner une réponse.  
            </div>
         </div>
         <div class="c-quiz-question__options">
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21899" value="66917">   <span class="c-radio-label__label">  a) La Chine. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21899" value="66919">   <span class="c-radio-label__label">  b) L’Inde. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21899" value="66921">   <span class="c-radio-label__label">  c) La Corée du Nord. </span>   
               <div class="c-radio__indicator"></div>
            </label>
         </div>
      </li>
      <li class="c-quiz-question" data-frm-validate="[ 'required' ]">
         <h5 class="c-quiz-question__title">  8) Les relations économiques entre la Chine et le Japon se caractérisent par : </h5>
         <div class="c-block-error">
            <div class="c-block-error__title">
               <div class="c-block-bubble c-block-bubble--error">
                  <svg class="c-icon-svg" aria-hidden="true">
                     <use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
                  </svg>
               </div>
               Veuillez sélectionner une réponse.  
            </div>
         </div>
         <div class="c-quiz-question__options">
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21901" value="66923">   <span class="c-radio-label__label">  a) des conflits. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21901" value="66925">   <span class="c-radio-label__label">  b) de la concurrence. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21901" value="66927">   <span class="c-radio-label__label">  c) de la complémentarité. </span>   
               <div class="c-radio__indicator"></div>
            </label>
         </div>
      </li>
      <li class="c-quiz-question" data-frm-validate="[ 'required' ]">
         <h5 class="c-quiz-question__title">  9) À quelle instance la Chine refuse-t-elle la candidature du Japon ? </h5>
         <div class="c-block-error">
            <div class="c-block-error__title">
               <div class="c-block-bubble c-block-bubble--error">
                  <svg class="c-icon-svg" aria-hidden="true">
                     <use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
                  </svg>
               </div>
               Veuillez sélectionner une réponse.  
            </div>
         </div>
         <div class="c-quiz-question__options">
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21903" value="66929">   <span class="c-radio-label__label">  a) L’ONU. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21903" value="66931">   <span class="c-radio-label__label">  b) L’OMC. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21903" value="66933">   <span class="c-radio-label__label">  c) Le Conseil de sécurité de l’ONU. </span>   
               <div class="c-radio__indicator"></div>
            </label>
         </div>
      </li>
      <li class="c-quiz-question" data-frm-validate="[ 'required' ]">
         <h5 class="c-quiz-question__title">  10) Quel État est chargé d’assurer la protection militaire du Japon ? </h5>
         <div class="c-block-error">
            <div class="c-block-error__title">
               <div class="c-block-bubble c-block-bubble--error">
                  <svg class="c-icon-svg" aria-hidden="true">
                     <use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
                  </svg>
               </div>
               Veuillez sélectionner une réponse.  
            </div>
         </div>
         <div class="c-quiz-question__options">
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21905" value="66935">   <span class="c-radio-label__label">  a) Le Royaume-Uni. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21905" value="66937">   <span class="c-radio-label__label">  b) Les États-Unis. </span>   
               <div class="c-radio__indicator"></div>
            </label>
            <label class="  c-radio-label u-themed  ">
               <input type="radio" name="question_21905" value="66939">   <span class="c-radio-label__label">  c) La Chine. </span>   
               <div class="c-radio__indicator"></div>
            </label>
         </div>
      </li>
   </ol>
   <div class="c-form__errors">
      <div class="c-block-error">
         <div class="c-block-error__title">
            <div class="c-block-bubble c-block-bubble--error">
               <svg class="c-icon-svg" aria-hidden="true">
                  <use xlink:href="/svg/etu.sprite.svg#icon-exclamation"></use>
               </svg>
            </div>
            Attention ! Veuillez répondre à toutes les questions.  
         </div>
      </div>
   </div>

Редактировать: я добавил код и детали, чтобы быть более точным, я надеюсь, что мою проблему легче понять .

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Я обнаружил и использовал Selenium в качестве браузера и, таким образом, выполнял действия, которые я просил сделать. Это вроде работает, и мне удалось получить доступ к остальной части страницы:

require "selenium-webdriver"

driver = Selenium::WebDriver.for :chrome
url = "https://www.letudiant.fr/quiz/bac/histoire-geographie/quiz-bac-histoire-geographie-l-es-s-l-asie-du-sud-et-de-l-est-les-enjeux-de-la-croissance/question.html"
driver.navigate.to url
driver.manage.window.maximize

sleep(3)
wait = Selenium::WebDriver::Wait.new(:timeout => 30)

name = wait.until {

  container = driver.find_elements(:class, "c-quiz-question")
  container.each do |element|
    puts element.text
  end

  puts "=========="

  radio_buttons = driver.find_elements(:class, "c-radio-label")
  radio_buttons.each do |button|
     button.click
  end

  puts "========="

  driver.find_element(:class, "c-button").click

}

Вот результаты в консоли:

1) Mumbai est :
a) la capitale politique de l’Union indienne.
b) la capitale économique et culturelle de l’Union indienne.
c) la capitale culturelle de l’Union indienne.
2) Que sont les slums ?
a) Le nom des bidonvilles en Inde.
b) Le nom des quartiers aisés en Inde.
c) Le nom des décharges en Inde.
3) Comment évolue la population de l’agglomération de Mumbai ?
a) Une croissance lente.
b) Une stagnation.
c) Une croissance rapide.
4) Quelle est la part de la population de l’Asie du Sud et de l’Est dans la population mondiale ?
a) 2/3.
b) 1/4.
c) 1/2.
5) Que signifie « PMA » ?
a) Pays mal avancés.
b) Pays les moins avancés.
c) Pays mal adaptés.
==========
=========
6) Parmi ces trois États, quel est celui dont la population croît la plus vite ?
a) L’Inde.
b) Le Japon.
c) La Chine.
7) Lequel de ces États est une démocratie ?
a) La Chine.
b) L’Inde.
c) La Corée du Nord.
8) Les relations économiques entre la Chine et le Japon se caractérisent par :
a) des conflits.
b) de la concurrence.
c) de la complémentarité.
9) À quelle instance la Chine refuse-t-elle la candidature du Japon ?
a) L’ONU.
b) L’OMC.
c) Le Conseil de sécurité de l’ONU.
10) Quel État est chargé d’assurer la protection militaire du Japon ?
a) Le Royaume-Uni.
b) Les États-Unis.
c) La Chine.
==========

Однако, чтобы сделать это, я пришлось вручную закрыть всплывающее окно, которое появляется в браузере Selenium, и если я не закрываю его вручную, у меня есть ElementClickInterceptedError, который убивает мою программу.

Есть ли способ закрыть это всплывающее окно с Ruby внутри Селена?


 element click intercepted: Element <label class="  c-radio-label u-themed  ">...</label> is not clickable at point (476, 499). Other element would receive the click: <div class="sd-cmp-39-hc" style="color: rgb(51, 51, 51);">...</div> (Selenium::WebDriver::Error::ElementClickInterceptedError)

0 голосов
/ 03 марта 2020

На странице 2 есть больше флажков.

В исходном коде страницы показано 5 ответов и 15 флажков, но я посетил страницу и увидел 10 вопросов с 30 флажками. Это причина сообщения об ошибке на французском языке, что отмечены не все флажки.

Проверьте страницу 1, используя следующий код:

agent = Mechanize.new
page = agent.get('https://www.letudiant.fr/quiz/bac/histoire-geographie/quiz-bac-histoire-geographie-l-es-s-l-asie-du-sud-et-de-l-est-les-enjeux-de-la-croissance/question.html')
form = agent.page.form_with(:class => "c-form")

puts form.inspect 

На странице есть две разные формы, как вы можете видеть если вы l oop сверх page.forms и form.fields:

agent = Mechanize.new
page = agent.get('https://www.letudiant.fr/quiz/bac/histoire-geographie/quiz-bac-histoire-geographie-l-es-s-l-asie-du-sud-et-de-l-est-les-enjeux-de-la-croissance/question.html')
agent.page.forms.each do |form|
  pp form
  form.fields.each do |field|
  pp field
  end
end

" Начало работы с Mechanize " поможет.

Вам нужно нажать на нажмите кнопку внизу, а затем повторите то же действие на стр. 2 перед отправкой формы.

Похоже, что вариант отсутствует, поскольку форма изменяется с помощью JavaScript.

...