2

--auto-open-devtools-for-tabs为了调查由于 Javascript 错误(在 Google Chrome 中)导致的 Selenium 测试失败,我使用 Chrome 的命令行选项结合Debugger.setPauseOnExceptionsChrome 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.logCDP 命令似乎被正确接受。有什么我错过的吗?

Python 3.8 上的当前(稳定)Selenium 客户端(3.141.0)和当前的 Google Chrome(83)。

4

0 回答 0