--auto-open-devtools-for-tabs
为了调查由于 Javascript 错误(在 Google Chrome 中)导致的 Selenium 测试失败,我使用 Chrome 的命令行选项结合Debugger.setPauseOnExceptions
Chrome Devtools Protocol 命令在本地(非无头)运行测试(另请参见Break on exception in Chrome使用硒)。
显然这不起作用(不再),Selenium for Python 中的一个小测试用例:
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
options = webdriver.chrome.options.Options()
options.add_argument('--auto-open-devtools-for-tabs')
driver = webdriver.Chrome(
options=options,
service_args=["--verbose", "--log-path=chromedriver.log"]
)
wait = WebDriverWait(driver, 5)
page = """
<html>
<head><title>Test</title></head>
<body>
<script>
function errorTest() {
setTimeout(() => alert('It should pause before me!'), 1000)
throw new Error('Foobar')
}
</script>
<button id="btn" onclick="errorTest()">Click me</button>
</body>
</html>
"""
driver.get("data:text/html;charset=utf-8," + page)
wait.until(
EC.title_contains("Test"),
"Page did not load"
)
driver.execute_cdp_cmd("Debugger.enable", {})
driver.execute_cdp_cmd("Debugger.setPauseOnExceptions", {"state": "all"})
driver.find_element_by_id("btn").click()
根据chromedriver.log
CDP 命令似乎被正确接受。有什么我错过的吗?
Python 3.8 上的当前(稳定)Selenium 客户端(3.141.0)和当前的 Google Chrome(83)。