설정을 Chrome 개발자 도구(셀레늄 4)을 이용하여 원격 WebDriver 에서는 파이썬

0

질문

필터를 이용하여 설정의 사용은 크롬 개발자 도구를 사용하여 셀레늄 4 고 있습니다. 나는 그것을 얻을 수 있으(없이 모든 비동기는 물건),그러나려고 할 때 사용하 webdriver.원격 구현이 종료되는 현상이 발생합니다.

예제는 다음과 같습니다 셀레늄 docs: https://www.selenium.dev/de/documentation/support_packages/chrome_devtools/

방법은 아래 나는 그것을 실행합니다.

import asyncio

from selenium import webdriver
import selenium.webdriver.common.devtools.v96 as devtools

async def geo_location_test():
    try:
        chrome_options = webdriver.ChromeOptions()
        driver = webdriver.Remote(
            command_executor='http://D5365900:4444/wd/hub',
            options=chrome_options
        )

        async with driver.bidi_connection() as session:
            cdp_session = session.session
            await cdp_session.execute(devtools.emulation.set_geolocation_override(latitude=41.8781,
                                                                                  longitude=-87.6298,
                                                                                  accuracy=100))
        driver.get("https://my-location.org/")
    finally:
        driver.quit()


async def main():
    await geo_location_test()

if __name__ == "__main__":
    asyncio.run(main())

그것은 실선 async with driver.bidi_connection() as session: (세션을 설정하고 Chrome 브라우저 열립니다). 그러나 그것은 충돌과 함께 다음을 추적합니다.

Traceback (most recent call last):
  File "C:\Users\y04082\eclipse-workspace\WWI-Testautomation\TestScripts\Josh\async_sel_4.py", line 54, in <module>
    asyncio.run(main())
  File "C:\Program Files\Python310\lib\asyncio\runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "C:\Program Files\Python310\lib\asyncio\base_events.py", line 641, in run_until_complete
    return future.result()
  File "C:\Users\y04082\eclipse-workspace\WWI-Testautomation\TestScripts\Josh\async_sel_4.py", line 51, in main
    await geo_location_test()
  File "C:\Users\y04082\eclipse-workspace\WWI-Testautomation\TestScripts\Josh\async_sel_4.py", line 40, in geo_location_test
    async with driver.bidi_connection() as session:
  File "C:\Program Files\Python310\lib\contextlib.py", line 199, in __aenter__
    return await anext(self.gen)
  File "C:\Program Files\Python310\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 1576, in bidi_connection
    async with cdp.open_cdp(ws_url) as conn:
  File "C:\Program Files\Python310\lib\contextlib.py", line 199, in __aenter__
    return await anext(self.gen)
  File "C:\Program Files\Python310\lib\site-packages\selenium\webdriver\common\bidi\cdp.py", line 457, in open_cdp
    async with trio.open_nursery() as nursery:
  File "C:\Program Files\Python310\lib\site-packages\trio\_core\_run.py", line 796, in __aenter__
    self._scope.__enter__()
  File "C:\Program Files\Python310\lib\site-packages\trio\_core\_ki.py", line 159, in wrapper
    return fn(*args, **kwargs)
  File "C:\Program Files\Python310\lib\site-packages\trio\_core\_run.py", line 449, in __enter__
    task = _core.current_task()
  File "C:\Program Files\Python310\lib\site-packages\trio\_core\_run.py", line 2285, in current_task
    raise RuntimeError("must be called from async context") from None
RuntimeError: must be called from async context

당신이 볼 수 있듯이,내가 사용하는 파이썬 3.10. 또한 업그레이드 셀레늄 바인딩을 4.1.0 및 실행 셀레늄 4.0.0 허브/노드 구성을 자동화하는 크롬 96.

어떤 아이디어,문제는 여기에 무엇인가? 내가 처리하는 비동기 하이 잘못?

어떤 도움을 많이 감사드립니다!

업데이트 후 실행하려고 그것으로 trio(제안에 헨리 Ashton-마틴의 댓글),나는 다음과 같은 오류가 있습니다.

Traceback (most recent call last):
  File "C:\Program Files\Python310\lib\site-packages\trio\_highlevel_open_tcp_stream.py", line 332, in attempt_connect
    await sock.connect(sockaddr)
  File "C:\Program Files\Python310\lib\site-packages\trio\_socket.py", line 682, in connect
    raise OSError(err, "Error in connect: " + os.strerror(err))
OSError: [Errno 10049] Error in connect: Unknown error

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\y04082\eclipse-workspace\WWI-Testautomation\TestScripts\Josh\async_sel_4.py", line 58, in <module>
    trio.run(main)
  File "C:\Program Files\Python310\lib\site-packages\trio\_core\_run.py", line 1932, in run
    raise runner.main_task_outcome.error
  File "C:\Users\y04082\eclipse-workspace\WWI-Testautomation\TestScripts\Josh\async_sel_4.py", line 55, in main
    await geo_location_test()
  File "C:\Users\y04082\eclipse-workspace\WWI-Testautomation\TestScripts\Josh\async_sel_4.py", line 44, in geo_location_test
    async with driver.bidi_connection() as session:
  File "C:\Program Files\Python310\lib\contextlib.py", line 199, in __aenter__
    return await anext(self.gen)
  File "C:\Program Files\Python310\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 1576, in bidi_connection
    async with cdp.open_cdp(ws_url) as conn:
  File "C:\Program Files\Python310\lib\contextlib.py", line 199, in __aenter__
    return await anext(self.gen)
  File "C:\Program Files\Python310\lib\site-packages\selenium\webdriver\common\bidi\cdp.py", line 458, in open_cdp
    conn = await connect_cdp(nursery, url)
  File "C:\Program Files\Python310\lib\site-packages\selenium\webdriver\common\bidi\cdp.py", line 479, in connect_cdp
    ws = await connect_websocket_url(nursery, url,
  File "C:\Program Files\Python310\lib\site-packages\trio_websocket\_impl.py", line 262, in connect_websocket_url
    return await connect_websocket(nursery, host, port, resource,
  File "C:\Program Files\Python310\lib\site-packages\trio_websocket\_impl.py", line 171, in connect_websocket
    stream = await trio.open_tcp_stream(host, port)
  File "C:\Program Files\Python310\lib\site-packages\trio\_highlevel_open_tcp_stream.py", line 367, in open_tcp_stream
    raise OSError(msg) from trio.MultiError(oserrors)
OSError: all attempts to connect to 0.0.0.0:4444 failed
1

최고의 응답

0

것 셀레늄을 사용하지 않는 파이썬의 내장 async framework 그러나 사용하 는 포장이라고 트리오뿐만 아니라. 할 수 있어야 이 문제를 해결하이 변화에 의해서 코드:

if __name__ == "__main__":
    asyncio.run(main())

하기:

if __name__ == "__main__":
    import trio
    trio.run(main)
2021-12-10 10:43:06

제안을 주셔서 감사합니다. 내가 실제로 시도했습니다. 내 업데이트에 게시하여(다)오류가 사용하려고 시도하면 trio.
josh42

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................