前提・実現したいこと
全くの初心者です。色々なページを参考にしながら作ってます。
Pythonとselenium、chromeで
Xpath要素が有効かどうか調べて、無効であればページを更新する。
有効であればボタンをクリックして次の工程に進む
(これは多分成功しました)
これを5回(回数は未定)とか繰り返す処理にしたいが、繰り返し処理の中に入れると無効の間は更新してくれるが有効になってもボタンリックしてくれずに止まってしまいます。
質問の方法もよくわかっていません。見づらくなってしまいました。
発生している問題・エラーメッセージ
そもそも繰り返し処理に入れる前には出なかった箇所でエラーも出ている様子
AttributeError: 'NoneType' object has no attribute 'is_enabled'
PS C:\driver> & C:/Users/◎◎/AppData/Local/Programs/Python/Python37-32/python.exe c:/driver/.py
Traceback (most recent call last):
File "c:/driver/.py", line 45, in <module>
reserve2_btn = driver.find_element_by_xpath('//[@id="contener"]/form/dl/dt[11]/input')
File "C:\Users\◎◎\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 394, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "C:\Users\◎◎\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element
'value': value})['value']
File "C:\Users\◎◎\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\◎◎\AppData\Local\Programs\Python\Python37-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//[@id="contener"]/form/dl/dt[11]/input"}
(Session info: chrome=78.0.3904.70)
該当のソースコード
<Python>
```ここに言語を入力
i=0
while i < 5:
reserve2_btn = driver.find_element_by_xpath('//*[@id="contener"]/form/dl/dt[11]/input')
print(reserve2_btn.is_enabled())
if not reserve2_btn.is_enabled() == 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 ボタンが無効の時 <input type="button" disabled="" name="btn_res" class="btn" value=" ×空きなし "> ボタンが有効の時 <input type="submit" name="btn_res" class="btn" value="予約する">
回答1件
あなたの回答
tips
プレビュー