我正在使用 Django 和 Google Chrome 学习 Selenium。 *我使用Selenium 4.11.2。
然后,我用
--headless
、--headless=chrome
和--headless=new
进行测试,如下所示,然后一切正常:
from django.test import LiveServerTestCase
from selenium import webdriver
class TestBrowser(LiveServerTestCase):
def test_example(self):
options = webdriver.ChromeOptions()
options.add_argument("--headless") # Here
driver = webdriver.Chrome(options=options)
driver.get(("%s%s" % (self.live_server_url, "/admin/")))
assert "Log in | Django site admin" in driver.title
from django.test import LiveServerTestCase
from selenium import webdriver
class TestBrowser(LiveServerTestCase):
def test_example(self):
options = webdriver.ChromeOptions()
options.add_argument("--headless=chrome") # Here
driver = webdriver.Chrome(options=options)
driver.get(("%s%s" % (self.live_server_url, "/admin/")))
assert "Log in | Django site admin" in driver.title
from django.test import LiveServerTestCase
from selenium import webdriver
class TestBrowser(LiveServerTestCase):
def test_example(self):
options = webdriver.ChromeOptions()
options.add_argument("--headless=new") # Here
driver = webdriver.Chrome(options=options)
driver.get(("%s%s" % (self.live_server_url, "/admin/")))
assert "Log in | Django site admin" in driver.title
我的问题:
--headless
、--headless=chrome
和--headless=new
有什么区别?--headless
,--headless=chrome
还是--headless=new
?此处解释了差异:https://stackoverflow.com/a/73840130/7058266
首先来了
--headless
。然后在 Chrome 96 中添加了 --headless=chrome
。然后在 Chrome 109 中将新名称更名为 --headless=new
。较新的版本使无头 Chrome 的工作方式与常规 Chrome 完全相同,但它比旧的无头 Chrome 稍慢一些,因为它具有与常规 Chrome 相同的后端代码。
用途:
options.add_argument("--headless=new")
--headless
是较旧的论点,缺少一些新功能,例如我无法使用 Selenium 下载文件。--headless=new
有更多功能,目前我使用此选项,以便我可以测试文件下载。
来自 https://www.selenium.dev/blog/2023/headless-is-going-away/:
传统的 --headless,从 96 版本开始,Chrome 有了新的 headless 模式,允许用户获得完整的浏览器功能(甚至运行扩展)。在版本 96 到 108 之间是 --headless=chrome,在版本 109 之后是 --headless=new。
在将 headless 与 Selenium 一起使用时,使用 --headless=new 应该会带来更好的体验。