質問: True: print("無効") time.sleep(2) driver.refresh() else: reserve2_btn.click() driver.quit() i=i+1 ``` `` ### 試したこと 待機 driver.implicitly_wait(20) WebDriverWait(driver,10).until(EC.presence_of_element_located((By.xpath, '//*[@id="contener"]/form/dl/dt[11]/input'))) スクロール driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") 他にも色々、よくわからないので検索して出てきたものをコピペして少し修正するも基礎がわかっていないのでそれ自体がエラーになり深みにはまってしまいました。 ### 補足情報(FW/ツールのバージョンなど) Python3.7.4 ボタンが無効の時 ボタンが有効の時
回答: xpathを使うべきDOMではないですね。 ``` count = 5 for _ in range(count): if driver.find_element_by_name('btn_res').get_attribute('value') == '予約する': # 有効 break else: # 無効 driver.refresh() time.sleep(5) else: print(str(count) + '回更新しましたが全部ボタンが無効でしたのでプログラムを終了します') driver.quit() exit() print('ボタンが押せる状態だったのでボタンを押します') driver.find_element_by_name('btn_res').click() # ボタンを押せた後にやりたい処理をこれ以降に書いていく ``` 察するにチケットキャンセル待ちの監視用プログラムか何かでしょうか。 起こっているエラーがNoSuchElementExceptionのようですので、 このボタンのxpathは何らかの条件によって変化するため、 [@id="contener"]/form/dl/dt[11]/inputで固定にしたことにより エラーが発生したと推測しました。 xpathはこのようなDOMには非常に弱い武器なので、 name属性やid属性があれば素直にそちらを利用してください。