seleniumbase用pdbp
从pdb开始,它的显示屏有限,没有颜色和有限的能力。这里是python的内置pdb调试器:
pdb
ipdb调试器添加了选项卡的完成,语法突出显示,更好的追溯等(I talked about it in a past blog post.)在这里的外观示例:
ipdb
ipdb调试器
主要缺点是它带有大量的外部依赖项,需要时间才能下载。这里是ipdb依赖项的pipdeptree:
> pipdeptree IPDB == 0.13.13 –装饰器[必需:任何安装:5.1.1] IPYTHON [必需:> = 7.31.1,已安装:8.14.0] AppNope [必需:安装的任何:0.1.3] ââ€[必需:安装:0.2.0] –装饰器[必需:任何安装:5.1.1] JEDI [必需:> = 0.16,安装:0.18.2] – parso [必需:> = 0.8.0,<0.9.0,安装:0.8.3]'已安装:0.1.6]â– traitlet [必需:安装:5.9.0] - pexpect [必需:> 4.3,已安装:4.8。 0] ptyprocess [必需:> = 0.5,安装:0.7.0] •需要:安装的任何条件:0.7.5] 提示toolkit [必需:> = 3.0.30,<3.1.0,!= 3.0.37,已安装:3.0.38] wcwidth [必需:安装:0.2.6] - pygments [必需:> = 2.4.0,安装:2.15.1] - 堆栈数据[必需:安装:0.6.2] Asttokens [必需:> = 2.1.0,安装:2.2.1] - 六个[必需:任何安装:1.16.0] 执行[必需:> = 1.2.0,安装:1.2.0] pure-eval [必需:任何,安装:0.2.2] traitlets [必需:> = 5,安装:5.9.0]
如果您已经使用了ipython,这不是一个问题,因为无论如何您都需要下载大多数这些依赖项。但是,如果您不使用ipython!您仍然需要下载这些依赖项。
ipython
接下来是pdbpp调试器。它具有选项卡的完成,语法突出显示,更好的例外,显示代码的不同模式,以便您可以获取完整的视图与逐条线等。在这里,它的外观示例:
pdbpp
这里的主要问题是:pdbpp对fancycompleter具有依赖性,该fancycompleter对pyreadline(https://github.com/pyreadline/pyreadline)具有windows的依赖性,该问题具有此问题:pyreadline/pyreadline#65,这导致了此错误:AttributeError: module 'collections' has no attribute 'Callable'。对于运行Python 3.11或更新的Windows用户,这是一个主要问题。
fancycompleter
pyreadline
AttributeError: module 'collections' has no attribute 'Callable'
3.11
pdbp
我创建了 pdbp(pdb+) python debugger,其依赖性对我自己的库tabcompleter(https://github.com/mdmintz/tabcompleter),该库对改进的pyreadline3(https://github.com/pyreadline3/pyreadline3/)具有依赖性,而不是pyreadline。然后一切再次开始工作。作为奖励,我修复了一些错误,在默认配置设置上进行了改进,并添加了一些新功能。
tabcompleter
pyreadline3
> pipdeptree PDBP == 1.4.2 –jgments [必需:> = 2.15.1,安装:2.15.1] TabCompleter [必需:> = 1.2.1,已安装:1.2.1]
pip install pdbp(注意:pdbp已包含在seleniumbase中)
pip install pdbp
seleniumbase
然后将import pdbp添加到您项目的__init__.py中,这将自动使Pdb+在断点处成为默认调试器。
import pdbp
__init__.py
Pdb+
现在让我们谈论使用它:
pytest
"--pdb"
"pytest"
"--trace"
"pdb"
"pdbp"
"pdb.set_trace()"
"pdbp.set_trace()"
"breakpoint()"
"--final-debug"
--ftrace
激活调试模式时,浏览器窗口将保持打开状态(与浏览器自动化结合使用时),您可以从命令行中查看变量的外观。
(请注意,您可能需要将"-s"添加到"pytest" Run命令中以允许断点,除非您已经在其中有"pytest.ini"文件。)
"-s"
"pytest.ini"
n (next)
s (step)
c (continue)
r (return)
j (jump)
w (where)
u (up)
d (down)
ll (longlist)
dir()
h (help)
sticky
trun (truncate)
此外,您可以在调试模式内执行所需的任何Python代码。
现在,您涵盖了使用pdbp的基础知识,请参阅pdbp GitHub ReadMe有关更多详细信息。
和Python浏览器自动化,请参见SeleniumBase GitHub page!