前回Google Chrome と chromedriverをダウングレードすることで、一時的に回避していたんですが
ある出来事を端緒に処理していきました。
まず前提として環境に大きな問題がありました。
- MacOSが古い。具体的にはMojaveだった。
- Python2.7x環境で書いたコードだった。
- 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