본문 바로가기

개발하자

파이썬에서 셀레늄으로 헤드리스 마이크로소프트 엣지를 실행하는 방법?

반응형

파이썬에서 셀레늄으로 헤드리스 마이크로소프트 엣지를 실행하는 방법?

크롬을 사용하면 드라이버를 만들 때 옵션을 추가할 수 있습니다. 넌 그냥 해

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)

다음과 같은 오류가 발생합니다:

유형 오류: () 예기치 않은 키워드 인수 'options'를 받았습니다

어떤 이유에서인지 Edge 드라이버는 파일 경로 이외의 다른 매개 변수를 허용하지 않습니다. 크롬처럼 엣지 헤드리스를 실행하고 옵션을 더 추가할 수 있는 방법이 있나요?




다음과 같이 Python 내에서 Headless 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)

또한 아래 예에서는 헤드리스 마이크로소프트 에지, 셀레늄 및 .*을 사용하여 장고 관리자를 테스트할 수 있습니다. *는 여러 헤드리스 브라우저(크롬, 마이크로소프트 에지 및 파이어폭스), 셀레늄, 피테스트 장고 및 장고:

# "tests/test.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.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



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

위의 코드를 시도해 보세요, 헤드리스를 활성화하려면 크롬을 활성화해야 합니다

https://learn.microsoft.com/en-us/microsoft-edge/webdriver-chromium/ ?http=smooth

이것은 엣지 레거시 버전이 아닌 새로운 엣지 크롬에서만 작동한다. 기존 버전에서는 헤드리스가 지원되지 않습니다

전체 코드

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)



하나도 수락하지 않아서 다음으로 전환했습니다: 그것은 나에게 효과가 있었다.

        # 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비트)

이게 효과가 있었어요.




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)

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)

self.wd.maximize_window()


반응형