Selenium 在生产中仅在无头模式下工作是真的吗? (姜戈)

Is it true that Selenium works only in headless mode in production? (Django)

我有一个 Django 视图函数:

def bypass_link(request, pk=None):
    instance = fields.objects.get(pk=pk)
    link = instance.quote
    options = webdriver.ChromeOptions()
    driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)

    driver.get(link)
    driver.find_element_by_id("butAgree").click()
    return redirect(link)

模板:

<td data-label="Quote">
    <a href="{% url 'bypass_link' i.id %}" target="_blank">{{ i.link }}</a>
</td>

urls.py

from django.conf.urls import url 

url(r'^bypass_link/(?P<pk>\d+)/$', views.bypass_link, name="bypass_link"),

当我点击超链接时,这会打开两个链接。当我删除 return redirect(link) 时,这会在页面上显示错误,但 selenium window 工作正常。

我只想在单击超链接时打开 selenium window。

编辑:

我将线路更改为 return redirect(index),这在本地有效。但是当我在生产中尝试这个时,这显示了一个错误。如果我在无头模式下 运行 硒,这个错误就解决了。但是,我不想 运行 在生产中处于无头模式。 Selenium 在生产中仅在无头模式下工作是真的吗?

Headless 软件(例如“headless Java”或“headless Linux”)是能够在没有图形用户界面的设备上运行的软件。 ...当普通版本的程序需要图形卡或类似的图形界面设备时,最常使用术语“无头”。

https://en.wikipedia.org/wiki/Headless_software

如果您所说的“生产”是指像 VPS 之类的远程服务器,那么您可能不能 运行 服务器上的图形 Web 浏览器,它必须是无头的。

解决方案 检查问题是否对所有 links 都存在,给出一个简单的 link 比如 google.com 有时,对于

的网站,问题可能仍然存在
  • 错误的证书可以通过 --ignore-certificate-errors
  • 解决
  • 可以使用 --enable-features=NetworkService
  • 解析自签名证书

或者,您可以选择不在生产环境中使用无头浏览器,而是使用 browserstacksaucelabs。基于云的连续测试平台,最适合跨浏览器和跨平台测试

您可以在任何类型的环境中使用 selenium headless 模式,它是自动化中的可配置功能之一。