pythonとseleniumでgoogle検索しようとしたときにno such elementで躓いた話

ソフト開発

Pythonでgoogleを操作しようと、コードを書いていて
ハマったので、備忘録としてここに記します。

今から思えば、まるっとコピーすれば、こんなミスはしないけど
半端な理解のまま突き進むとハマってしまうんだな〜と反省。

このミスを同様の内容がネットで出てこないので
多分、私が初?

万が一、ハマった人がいて助けになれば幸いです。

エラーメッセージ

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {“method”:”css selector”,”selector”:”[name=”q”]”}

対策

google.comをちゃんと起動させること。

あらすじ

PythonとSeleniumでブラウザを自動操作をしようとして
ネットを調べると出てくるコード。

下記は、そのまんまコピーしました。

driver = webdriver.Chrome()
driver.get('https://www.google.com/')
time.sleep(5)
search_box = driver.find_element_by_name("q")
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5)
driver.quit()

開発環境がgooglecolabratoryからubuntuのVScodeに代わるタイミングで
コード開発を中断していて、開発途中をコピーしたのだけど
出来は半端なものをコピーしたのが原因。

きちんと上のコードをそのままコピーすれば
何も問題もありません。

勘違いポイント

2行目の

driver.get(‘https://www.google.com/’)

これがgoogle.comを立ち上げるって意味なんだけど、
これをしないと、name=qのエレメントがないんです。

googlechromeを立ち上げた時の表示されるgoogle検索窓
(つまり、ホーム画面に設定されたgoogleってこと)

googleと検索して出てきた、google.comの検索窓

この2つは似て非なるもので
前者はF12キーで調べても、name=qは出てこないんです。

焦って、インラインフレームの方に注意が行ってしまい
2時間近く時間を浪費してしまったが
これもまた勉強ってことで。

インラインフレームとはHTMLの中に別のページが埋め込まれていて
F12キーで見えているものと、プログラムが見ているものが
別物の可能性があるよって話。

chromeのホーム画面のgoogle

google.comのgoogle

右側のF12キーの表示が違います。

コメント

タイトルとURLをコピーしました