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キーで見えているものと、プログラムが見ているものが
別物の可能性があるよって話。


右側のF12キーの表示が違います。
コメント