質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

2540閲覧

seleniumを使って、google formを自動入力するために、label-area属性を取得したい。

trami

総合スコア25

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2020/07/28 10:34

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

Safariを使いつつ、seleniumではChrimeを使っていたのが問題のようです。

投稿2020/07/28 14:50

trami

総合スコア25

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問