我正在嘗試讓 Selenium 與 Chrome 一起使用,但我一直遇到此錯誤訊息(以及其他類似的錯誤訊息):
AttributeError: 'WebDriver' object has no attribute 'find_element_by_name'
find_element_by_id(),find_element_by_class()等也會出現同樣的問題。
我也不能打電話send_keys()。
我只是運行這里提供的測驗代碼:https ://chromedriver.chromium.org/getting-started
import time
from selenium import webdriver
driver = webdriver.Chrome("C:/Program Files/Chrome Driver/chromedriver.exe") # Path to where I installed the web driver
driver.get('http://www.google.com/');
time.sleep(5) # Let the user actually see something!
search_box = driver.find_element_by_name('q')
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5) # Let the user actually see something!
driver.quit()
我正在使用 Google Chrome 版本 103.0.5060.53 并從這里下載了 ChromeDriver 103.0.5060.53:https://chromedriver.chromium.org/downloads
運行代碼時,Chrome 會打開并導航到 google.com,但會收到以下輸出:。
C:\Users\Admin\Programming Projects\Python Projects\Clock In\clock_in.py:21: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
driver = webdriver.Chrome("C:/Program Files/Chrome Driver/chromedriver.exe") # Optional argument, if not specified will search path.
DevTools listening on ws://127.0.0.1:58397/devtools/browser/edee940d-61e0-4cc3-89e1-2aa08ab16432
[9556:21748:0627/083741.135:ERROR:device_event_log_impl.cc(214)] [08:37:41.131] USB: usb_service_win.cc:415 Could not read device interface GUIDs: The system cannot find the file specified. (0x2)
[9556:21748:0627/083741.149:ERROR:device_event_log_impl.cc(214)] [08:37:41.148] USB: usb_device_handle_win.cc:1048 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F)
[9556:21748:0627/083741.156:ERROR:device_event_log_impl.cc(214)] [08:37:41.155] USB: usb_device_handle_win.cc:1048 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F)
[9556:21748:0627/083741.157:ERROR:device_event_log_impl.cc(214)] [08:37:41.156] USB: usb_device_handle_win.cc:1048 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F)
[9556:21748:0627/083741.157:ERROR:device_event_log_impl.cc(214)] [08:37:41.156] USB: usb_device_handle_win.cc:1048 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F)
Traceback (most recent call last):
File "C:\[REDACTED]", line 27, in <module>
search_box = driver.find_element_by_name('q')
AttributeError: 'WebDriver' object has no attribute 'find_element_by_name'
[21324:19948:0627/083937.892:ERROR:gpu_init.cc(486)] Passthrough is not supported, GL is disabled, ANGLE is
注意:我替換了這篇文章的檔案路徑。
我不認為 DevTools 監聽部分與這個問題有關,但我想我會包括它,以防萬一。
uj5u.com熱心網友回復:
Selenium 剛剛在 version 中洗掉了該方法4.3.0。查看更改:https ://github.com/SeleniumHQ/selenium/blob/a4995e2c096239b42c373f26498a6c9bb4f2b3e7/py/CHANGES
Selenium 4.3.0
* Deprecated find_element_by_* and find_elements_by_* are now removed (#10712)
* Deprecated Opera support has been removed (#10630)
* Fully upgraded from python 2x to 3.7 syntax and features (#10647)
* Added a devtools version fallback mechanism to look for an older version when mismatch occurs (#10749)
* Better support for co-operative multi inheritance by utilising super() throughout
* Improved type hints throughout
您現在需要使用:
driver.find_element("name", "q")
在您的示例中,它將變為:
search_box = driver.find_element("name", "q")
search_box.send_keys('ChromeDriver')
search_box.submit()
為了提高可靠性,您應該考慮WebDriverWait結合使用element_to_be_clickable.
uj5u.com熱心網友回復:
find_element_by_ /find_elements_by_已棄用。您可以改用 find_element ()
首先必須匯入:
from selenium.webdriver.common.by import By
那么你可以使用它:
driver.find_element(By.XPATH, " ")
driver.find_elements(By.XPATH, " ")
driver.find_element(By.CLASS_NAME, " ")
driver.find_elements(By.CLASS_NAME, " ")
等等。請參閱 find_element() API 了解所有用法
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/496621.html
