前提・実現したいこと
seleniumを使って、google formを自動入力できるようにしたいと考えています。
そこで、入力欄を取得しようとしたのですが、うまくいきません。
具体的には、日付を入れるところで、inpout属性で「area-label="年"」という属性を持つものを見つけることができたので、そのinputタグを取得しようとしたのですが、そのようなタグは無いとのエラーが出ました。
cssセレクタはそれなりに慣れているのですが、area-label属性を取得するのは、xpathが必要そうだったので、xpathで実装しました。
該当のHTMLは抜粋しましたが、以下のURLに実際のGoogle Fromがあります。
https://docs.google.com/forms/d/e/1FAIpQLSdt9xHLgjyfxaHDPXEjN4tuf9qdllasxCbvq4OyIru64opRCg/viewform?usp=sf_link
よろしくお願いします。
発生している問題・エラーメッセージ
Message: no such element: Unable to locate element: {"method":"xpath","selector":"//input[@aria-label="年"]"}
該当のソースコード
Python
1from selenium.webdriver import Chrome, ChromeOptions 2from selenium.webdriver.common.by import By 3from selenium.webdriver.support.ui import WebDriverWait 4from selenium.webdriver.support import expected_conditions as EC 5 6# Chromeのドライバーを得る 7options = ChromeOptions() 8options.headless = True 9driver = Chrome(options=options) 10 11# Googleフォームにアクセス 12url = 'https://docs.google.com/forms/d/e/1FAIpQLSdt9xHLgjyfxaHDPXEjN4tuf9qdllasxCbvq4OyIru64opRCg/viewform?usp=sf_link' 13driver.get(url) 14print('Googleフォームにアクセスしました') 15 16# 日付を入力 17year = driver.find_element_by_xpath('//input[@aria-label="年"]') 18# year = driver.find_element_by_xpath('//input[@type="text"]') 19# year = driver.find_element_by_css_selector('input[aria-label="年"]') 20# year = driver.find_element_by_css_selector('input[type="text"]') 21print(year)
HTML
1 2<div class="quantumWizTextinputPaperinputInputArea"> 3<input type="text" class="quantumWizTextinputPaperinputInput exportInput" jsname="YPqjbf" autocomplete="off" tabindex="0" aria-label="年" maxlength="4" disabled min="1870" max="2070" role="combobox" data-initial-value=""/> 4</div>
試したこと
似たような質問があり、コメントアウトしてあるものなどを、試してみたのですが、うまくいきませんでした。
またよくやるように、inputタグのtype属性から取得するやり方はできました。しかし、今回その方法でやると、他の要素も取得してしまうため、label-area属性で取得するのが最適だと考えています。
補足情報(FW/ツールのバージョンなど)
selenium 3.141.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。