1

リストされている特定の食品の価格を、国内のさまざまな場所に基づいてスクレイピングする必要があります。都市の名前を入力できる入力テキスト ボックスがあり、「Enter」を押すと、その都市で利用可能なアイテムのリストが表示されます。

これを自動化しようとしている方法は次のとおりです。

driver.get("https://grofers.com/")
ele = driver.find_element_by_xpath("//input[@data-test-id='area-input-box']")`
ele.send_keys(area)
ele.send_keys(Keys.RETURN)

私が扱っているHTMLは次のとおりです。

 

   <div style="margin-left: 51px; height: 36px;">
   <div style="display: flex; height: 100%;">
      <button class="btn location-box mask-button">Detect my location</button>
      <div class="oval-container">
         <div class="oval">
            <span class="separator-text">
               <div class="or">OR</div>
            </span>
         </div>
      </div>
      <div style="width: 220px;">
         <div class="modal-right__input-wrapper">
            <div class="display--table full-width">
               <div class="display--table-cell full-width">
                  <div id="map-canvas"></div>
                  <div class="Select location-search-input-v1 is-searchable Select--single">
                     <div class="Select-control">
                        <div class="Select-multi-value-wrapper" id="react-select-2--value">
                           <div class="Select-placeholder">Type your city Society/Colony/Area</div>
                           <div class="Select-input" style="display: inline-block;">**<input data-test-id="area-input-box" aria-activedescendant="react-select-2--value" aria-expanded="false" aria-haspopup="false" aria-owns="" role="combobox" value="">**</div>
                        </div>
                        <span class="Select-arrow-zone"><span class="Select-arrow"></span></span>
                     </div>
                  </div>
               </div>
            </div>
         </div>
      </div>
   </div>

問題は、send_keys の後、Web サイトが入力ボックスを自動入力するのに時間がかかることです。その後、Enter キーを押す必要があります。

send_keys の後に time.sleep(2) を使用しようとしましたが、Keys.RETURN を実行すると、ポップアップが消えて StaleElementException が発生します。

かなり長い間これにこだわっています。ヘルプ/ポインタをいただければ幸いです。

4

1 に答える 1