Selenium4ではfind_element_by_id、nameは非推奨

↑いつの間にかこんな感じで、、、

いままで使っていたfind_element_by_id、find_element_by_nameに打消し線が入るようになりました。

どうやらSeleniumのバージョンが4以上だと出るようで、4以上だと非推奨扱いとなりました。

というわけで、、今まで通りの要素の参照方法と、新しい要素の参照方法を比較してメモっておきます。

スポンサーリンク

Seleniumバージョンの確認

pip listコマンドで確認可能です。

Pycharmのコンソールで確認してます

テスト環境

http://holiday-programmer.net/form_check/

※どこでもいいですが、、、とりあえずこのページの内容をもとに新旧のSelenium関数で比較します。

要素の参照について

第一引数にBy~で要素の種類を指定することになりました。

関数名でidなのかnameなのかを指定するのではなくなって、確かにこっちの方が使いやすくなるかなとは思います。

nameから参照

driver.find_element_by_name("name").send_keys("test1") ※旧Ver
driver.find_element(By.NAME,"name").send_keys("test1") ※新Ver

idから参照

driver.find_element_by_id("age_2").click() ※旧Ver
driver.find_element(By.ID,"age_2").click() ※新Ver

classから参照

class_arr1 = driver.find_elements_by_id("Form-Item-Input") ※旧Ver
class_arr2 = driver.find_elements(By.CLASS_NAME,"Form-Item-Input") ※新Ver

XPathから参照

driver.find_element_by_xpath("/html/body/form/div/div[4]/textarea").send_keys("textarea1") ※旧Ver
driver.find_element(By.XPATH,"/html/body/form/div/div[4]/textarea").send_keys("textarea2") ※新Ver

CSS Selectorから参照

driver.find_element_by_css_selector("body > form > div > div:nth-child(4) > textarea").send_keys("textarea1") ※旧Ver
driver.find_element(By.CSS_SELECTOR,"body > form > div > div:nth-child(4) > textarea").send_keys("textarea2") ※新Ver

単数・複数の参照について

driver.find_element(By.NAME,"name").send_keys("xxxxx") ※単数
driver.find_elements(By.NAME,"name").send_keys("xxxxx") ※複数

「find_element」とすれば単一の要素取得、「find_elements」とすれば複数の要素取得になります。

※「find_element_by_name」と「find_elements_by_name」みたいな感じ

スポンサーリンク
おすすめの記事