如何使用Selenium Python以无界面模式运行Microsoft Edge?

7

使用Chrome时,在创建驱动程序时可以添加选项。只需执行以下操作即可:

options = Options()
options.headless = True
driver = webdriver.Chrome(PATH\TO\DRIVER, options=options)

但是尝试在Microsoft Edge中执行相同操作时,出现了某些问题。

options = Options()
options.headless = True
driver = webdriver.Edge(PATH\TO\DRIVER, options=options)

我收到了这个错误

TypeError: __init__() got an unexpected keyword argument 'options'

由于某些原因,Edge的驱动程序只能接受文件路径作为参数。是否有办法像Chrome一样以无头模式运行Edge并添加更多选项?

你使用的Selenium版本是什么? - Sharmiko
@Sharmiko Selenium 3.141.0 - Maypher
4个回答

6
  options = EdgeOptions()
  options.use_chromium = True
  options.add_argument("headless")
  options.add_argument("disable-gpu")

尝试上面的代码,你需要启用Chromium才能启用无头模式。

https://learn.microsoft.com/en-us/microsoft-edge/webdriver-chromium/?tabs=python

这仅适用于新的Edge Chromium,而不适用于旧版本的Edge。在旧版本中,无头模式不受支持。
完整代码
from msedge.selenium_tools import EdgeOptions
from msedge.selenium_tools import Edge

# make Edge headless
edge_options = EdgeOptions()
edge_options.use_chromium = True  # if we miss this line, we can't make Edge headless
# A little different from Chrome cause we don't need two lines before 'headless' and 'disable-gpu'
edge_options.add_argument('headless')
edge_options.add_argument('disable-gpu')
driver = Edge(executable_path='youredgedriverpath', options=edge_options)

2
我收到了 AttributeError: 'Options' 对象没有属性 'AddArgument' 的错误。 - Maypher
我正在运行最新版本的Edge,仍然遇到相同的错误。 - Maypher
哪个错误?我更新了代码,你能把错误粘贴一下吗? - PDHide
请安装 pip install msedge-selenium-tools,并阅读相关文档。 - PDHide
1
我首先遇到的是 EdgeOptions 未定义 的错误,然后又出现了一个错误,提示 AttributeError: 'Options' 对象没有 'add_argument' 属性。编辑:我已经安装了 msedge-tools。 - Maypher
显示剩余3条评论

3

webdriver.Edge 不接受任何 options,所以我将其切换为以下方式: 这对我有效。

        # imports
        from selenium import webdriver
        from msedge.selenium_tools import EdgeOptions

        # options
        options = EdgeOptions()
        options.use_chromium = True
        options.add_argument("--headless")
        options.add_argument("disable-gpu")

        browser = webdriver.Chrome(
            executable_path="resources/msedgedriver.exe", options=options)
        browser.get(gen_token)

我使用的 Microsoft Edge 版本是: Microsoft Edge 版本 89.0.774.57 (官方版本) (64 位)
这对我有效。

0
你可以像下面展示的那样,使用Python中的Selenium来无界面运行Microsoft Edge。
from selenium import webdriver

options = webdriver.EdgeOptions()
options.add_argument("--headless=new") # Here
driver = webdriver.Edge(options=options)

或者:

from selenium import webdriver
from selenium.webdriver.edge.options import Options

options = Options()
options.add_argument("--headless=new") # Here
driver = webdriver.Edge(options=options)

此外,下面的示例可以使用无头的Microsoft Edge、Selenium、pytest-djangoDjango来测试Django Admin。*我的回答解释了如何使用多个无头浏览器(Chrome、Microsoft Edge和Firefox)、Selenium、pytest-django和Django来测试Django Admin。
# "tests/test_1.py"

import pytest
from selenium import webdriver
from django.test import LiveServerTestCase

@pytest.fixture(scope="class")
def edge_driver_init(request):
    options = webdriver.EdgeOptions()
    options.add_argument("--headless=new")
    edge_driver = webdriver.Edge(options=options)
    request.cls.driver = edge_driver
    yield
    edge_driver.close()

@pytest.mark.usefixtures("edge_driver_init")
class Test_URL_Edge(LiveServerTestCase):
    def test_open_url(self):
        self.driver.get(("%s%s" % (self.live_server_url, "/admin/")))
        assert "Log in | Django site admin" in self.driver.title

或者:

# "tests/conftest.py"

import pytest
from selenium import webdriver

@pytest.fixture(scope="class")
def edge_driver_init(request):
    options = webdriver.EdgeOptions()
    options.add_argument("--headless=new")
    edge_driver = webdriver.Edge(options=options)
    request.cls.driver = edge_driver
    yield
    edge_driver.close()

# "tests/test_1.py"

import pytest
from django.test import LiveServerTestCase

@pytest.mark.usefixtures("edge_driver_init")
class Test_URL_Edge(LiveServerTestCase):
    def test_open_url(self):
        self.driver.get(("%s%s" % (self.live_server_url, "/admin/")))
        assert "Log in | Django site admin" in self.driver.title

-1

适用于Edge浏览器

options = EdgeOptions()

options.use_chromium = True

options.add_argument('--allow-running-insecure-content')

options.add_argument("--ignore-certificate-errors")

self.wd = webdriver.Chrome(executable_path=EdgeChromiumDriverManager().install(), options=options)

自己的.wd = webdriver.Chrome(executable_path=EdgeChromiumDriverManager()。install(),options=options)

self.wd.maximize_window()

针对 Edge 无头浏览器

options = EdgeOptions()

options.use_chromium = True

options.add_argument("--headless")

options.add_argument("disable-gpu")

options.add_argument('--allow-running-insecure-content')

options.add_argument('--ignore-certificate-errors')

self.wd = webdriver.Chrome(executable_path=EdgeChromiumDriverManager().install(), options=options)

代码意为使用 Chrome 浏览器,利用 EdgeChromiumDriverManager() 安装程序获取 driver 的路径,并通过 options 参数设置浏览器的选项。

self.wd.maximize_window()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接