修复Selenium错误:"target frame detached"?



希望我在这里提供了足够的信息。得到以下错误(最糟糕的是,无论代码更改如何,似乎都是随机发生的):

selenium.common.exceptions.WebDriverException: Message: target frame detached
(Session info: chrome=100.0.4896.127)
Stacktrace:
Backtrace:
Ordinal0 [0x00E57413+2389011]
Ordinal0 [0x00DE9F61+1941345]
...

这是我目前为止写的代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
PATH = r"C:UsersTimDesktopProjectchromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get(WEBLINK)
search_Hours = driver.find_element(by=By.LINK_TEXT, value="Hours")
search_Hours.click()
time.sleep(3)
tech = driver.find_element(by=By.ID, value='techStudiesInnerWrap')
print(tech.get_attribute('innerHTML'))
tech_Summary = driver.find_element(by=By.ID, value='techStudiesInnerWrap').find_element(by=By.CLASS_NAME, value='summary')
print(tech_Summary.get_attribute('innerHTML'))
print(tech_Summary.text)

我怀疑这与Chrome浏览器驱动的版本有关,或者可能是我得到的折旧警告(见下文)。但它的随机性让我难倒了。

DeprecationWarning: executable_path has been deprecated, please pass in a Service object
driver = webdriver.Chrome(PATH)

Chrome浏览器:版本100.0.4896.127(官方版本)(64位)

ChromeDriver:ChromeDriver 100.0.4896.60

这里有一个轻微的版本不匹配,但我的Chrome浏览器似乎不存在确切的驱动程序。

编辑:如果这对你们有帮助的话,我刚刚切换到Firefox的网络驱动程序。问题解决了。

一旦密钥executable_path被弃用,您必须使用Service()类的实例,如下所示:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
s = Service('C:/Users/.../chromedriver.exe')
driver = webdriver.Chrome(service=s)

更多信息请参见:链接

最新更新