我之前使用的是Chrome驱动程序版本74和Chrome浏览器版本74。在此期间,警报没有问题。当我的浏览器自动更新到版本 76 时,我确实将 Chrome 驱动程序版本替换为 76。
当我在更新后运行相同的脚本时,当浏览器在代码下方运行时,浏览器上的警报开始自动关闭(硒中 wait.py 的代码片段(。我确实在不同的PC上用驱动程序74和浏览器74重新测试了相同的代码,它工作正常。
我怀疑 chrome 更改了最新驱动程序中的警报行为并尝试使用 Chrome驱动程序选项中的以下语句,但不起作用。 "profile.managed_default_content_settings.弹出窗口":0,
弹出窗口在以下代码的"值 = 方法(self._driver("行被关闭。
def until(self, method, message=''):
"""Calls the method provided with the driver as an argument until the
return value is not False."""
screen = None
stacktrace = None
end_time = time.time() + self._timeout
while True:
try:
value = method(self._driver)
if value:
return value
except self._ignored_exceptions as exc:
screen = getattr(exc, 'screen', None)
stacktrace = getattr(exc, 'stacktrace', None)
time.sleep(self._poll)
if time.time() > end_time:
break
raise TimeoutException(message, screen, stacktrace)
铬使用的选项:
self._chromeoptions = Options
self._chromeops = webdriver.ChromeOptions()
prefs = {"download.default_directory": mainpath + r"bindownload_files",
"profile.default_content_setting_values.geolocation": 1,
"download.prompt_for_download": False,
'credentials_enable_service': False,
'profile': {
'password_manager_enabled': False
},
"applicationCacheEnabled": True,
"safebrowsing": {"enabled": True, "malware": {"enabled": True}}}
self._caps = DesiredCapabilities.CHROME
self._chromeops.add_experimental_option("prefs", prefs)
self._caps.setdefault("pageLoadStrategy", "normal")
self._chromeops.add_experimental_option("excludeSwitches", ["ignore-certificate-errors", "enable-automation"])
self._chromeops.add_argument("--start-maximized")
self._chromeops.add_argument("--disable-plugins")
self._chromeops.add_argument("--disable-extensions")
self._chromeops.set_capability('unexpectedAlertBehaviour', "ignore")
self._chromeops.add_experimental_option("useAutomationExtension", False)
其他详细信息:
方法调用函数直到...
def wait_till_inactive_delay(self, xpath, delay=20):
xpath = self.generate_xpath_structure(xpath)
WebDriverWait(self.driver, delay, ignored_exceptions= [NoSuchElementException]).until(expected_conditions.invisibility_of_element_located((By.XPATH, xpath)))
使用旧的chromedriver,当有警报并调用上述功能时,它将忽略并继续,但现在当浏览器中打开警报并调用上述方法时,警报将被关闭。
我希望 chrome 浏览器/驱动程序允许用户使用 switch_to_alert.accpet(( 接受弹出窗口,而不是关闭弹出窗口。
('unhandledPromptBehavior', "ignore"(
上述所需功能忽略了弹出窗口