启动功能时
def run(driver_path):
driver = webdriver.Chrome(executable_path=driver_path)
driver.get('https://tproger.ru/quiz/real-programmer/')
button = driver.find_element_by_class_name("quiz_button")
button.click()
run(driver_path)
我收到这样的错误:
<ipython-input-27-c5a7960e105f>:6: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
driver = webdriver.Chrome(executable_path=driver_path)
<ipython-input-27-c5a7960e105f>:10: DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead
button = driver.find_element_by_class_name("quiz_button")
...但我不明白为什么。
我在用着网络驱动程序 https://en.wikipedia.org/wiki/Selenium_(software)#Selenium_WebDriver我的 Chrome 版本的最新版本。我不知道为什么我得到
find_element_by_* commands are deprecated
...当文档中存在该命令时。
这个错误信息...
DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead
...意味着find_element_by_*
命令在最新的 Selenium Python 库中已弃用。
As AutomatedTester 提到 https://github.com/SeleniumHQ/selenium/issues/8806#issuecomment-711947184: This 弃用警告是对简化跨语言 API 的决定所做的更改的反映,而这就是这样做的。
Solution
相反,你必须使用find_element()
。举个例子:
您必须包含以下导入内容
from selenium.webdriver.common.by import By
-
Using class_name
:
button = driver.find_element_by_class_name("quiz_button")
需要替换为:
button = driver.find_element(By.CLASS_NAME, "quiz_button")
除此之外,您还必须更改以下内容:
-
Using id
:
element = find_element_by_id("element_id")
需要替换为:
element = driver.find_element(By.ID, "element_id")
-
Using name
:
element = find_element_by_name("element_name")
需要替换为:
element = driver.find_element(By.NAME, "element_name")
-
Using link_text
:
element = find_element_by_link_text("element_link_text")
需要替换为:
element = driver.find_element(By.LINK_TEXT, "element_link_text")
-
Using partial_link_text
:
element = find_element_by_partial_link_text("element_partial_link_text")
需要替换为:
element = driver.find_element(By.PARTIAL_LINK_TEXT, "element_partial_link_text")
-
Using tag_name
:
element = find_element_by_tag_name("element_tag_name")
需要替换为:
element = driver.find_element(By.TAG_NAME, "element_tag_name")
-
Using css_selector
:
element = find_element_by_css_selector("element_css_selector")
需要替换为:
element = driver.find_element(By.CSS_SELECTOR, "element_css_selector")
-
Using xpath
:
element = find_element_by_xpath("element_xpath")
需要替换为:
element = driver.find_element(By.XPATH, "element_xpath")
Note:如果您正在搜索和替换以实现上述更改,则需要对find_elements_*
,即复数形式find_element_*
.
您可能还会发现此升级指南很有用,因为它涵盖了升级时可能需要进行的一些其他不相关的更改:升级到 Selenium 4 https://www.selenium.dev/documentation/webdriver/getting_started/upgrade_to_selenium_4/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)