Python Selenium #shadow-root(open) 解決

前回Google Chrome と chromedriverをダウングレードすることで、一時的に回避していたんですが
ある出来事を端緒に処理していきました。

まず前提として環境に大きな問題がありました。

  1. MacOSが古い。具体的にはMojaveだった。
  2. Python2.7x環境で書いたコードだった。
  3. Seleniumが3.xだった。

全て連動した問題ですね。端的にいって全てが古い。
そして、ここですべてを清算するかーっと重い腰を上げるようなバルスな出来事が起きました。
メインのiMacが壊れてしまったのです。否が応でも全て新しくする必要ができました。

まずはPythonを3.x環境でコードを改変していきます。
基本的には一括で変換する2to3を最初に実行して、デバッグしていきました。
コンバートされてるのはprintだけ?ってぐらいの感じで作業量はそれなりでした。
ライブラリ名も変更されてimportできないものがあったりします。
ただ、基本的なところなのでwebでしらべればすぐ出てくるので深掘りする苦労はありません。

そして、分かるまで時間がかかり一番重要なところは#shadow-root(open)を叩いた以降の
elementの取得に関するfind_elementの書き方をBy.に変更するところで
つまりたとえると
find_element_by_css_selector(value)
としてあるコードを
find_element(By.CSS_SELECTOR,value)
とするってことです。
もちろん、以下でimportすることもお忘れなく
from selenium.webdriver.common.by import By
これにてちゃんと取得できるようになりました。

ちなみに環境としては以下のようになっています。
Python 3.8 and 3.10
Google chrome and chromedriver :9.6x
selenium 4.1



コメントを書く