流沙河鎮

情報技術系のこと書きます。

Selenium4系ではfindElement(s)By~関数が削除された

Selenium4系の最新では、要素の取得に用いるfindElement(s)By~関数が削除されている。元々deprecatedであったのが、完全に削除された格好。

driver.findElementById("elementId")
driver.findElementByName("elementName")
driver.findElementByXPath("xPath")
driver.findElementByLinkText("linkText")
driver.findElementByPartialLinkText("partialText")
driver.findElementByTagName("elementTagName")
driver.findElementByClassName("className")
driver.findElementByCssSelector(".className")

代わりに、以下の通りfind_element(s)関数を使用して、第一引数に selenium.webdriver.common.by.Byを渡す形になる。

driver.find_element(By.ID, "id")
driver.find_element(By.NAME, "name")
driver.find_element(By.XPATH, "xpath")
driver.find_element(By.LINK_TEXT, "link text")
driver.find_element(By.PARTIAL_LINK_TEXT, "partial link text")
driver.find_element(By.TAG_NAME, "tag name")
driver.find_element(By.CLASS_NAME, "class name")
driver.find_element(By.CSS_SELECTOR, "css selector")

selenium-python.readthedocs.io deprecatedになった時点で対応している人は問題ないが、放置しているとバージョンを上げたタイミングで既存コードが急に動かなくなるので気をつけよう(一敗) また、むかし書かれたメンテされてないSelenium関連記事は古い方式のままになっているので、しばらくは混乱を呼びそうである。
その他Selenium4系へのUpgradeの留意事項は以下を参照 www.selenium.dev