我一直在Linux上使用Selenium和python pyvirutaldisplay库来让webdriver完全在虚拟显示窗口中运行。然而,代码在Mac机器上使用时并不符合预期。基本情况如下:
from selenium import webdriver
from pyvirutaldisplay import Display
d = Display()
d.start()
driver = webdriver.Chrome()
在Linux上会发生什么,我希望发生的是打开一个虚拟显示器,然后将webdriver应用于它。然而,在Mac上发生的是,创建虚拟显示器,然后启动webdriver,但不应用于虚拟显示器。
我真的不知道为什么会这样。我不确定这是否是因为Mac GUI应用程序的行为与Linux上的不同,所以pyvirutaldisplay设置“xml 2”环境变量并启动Xvfb服务器不足以将webdriver应用于新的显示器。我不知道,任何帮助将不胜感激。
如果它有助于问题中的Mac在操作系统上:文图拉13.5.2. Selenium版本:4.4.2.浏览器为Chromedriver 117.0.5938.88。我还在Mac上安装了xquartz,并将Xvfb添加到PATH。
提前感谢!
1条答案
按热度按时间lrl1mhuk1#
如果你的目标是在Mac上运行无头测试,你可以使用新的无头模式(
--headless=new
),它的工作原理与普通的有头Chrome相同:在网站上,它和Chrome之间唯一明显的区别是用户代理。如果保持不变对您很重要,请修改用户代理,将
HeadlessChrome
替换为Chrome
。此外,作为
pyvirtualdisplay
的替代方案,您可以使用sbvirtualdisplay,它是专门为虚拟运行的Selenium设计的。它被流行的Selenium框架使用,比如https://github.com/seleniumbase/SeleniumBase示例用法:
这也包括上下文管理器格式: