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