2

有很多关于使用 Spectron 测试使用 Electron 构建的应用程序的文档。

由于我有很多用 Python 编写的实用程序,我想知道是否有任何方法可以使用 Python-Selenium 来测试在 Electron 中构建的应用程序。

从一些在线资源中,我发现有几个人能够做到(虽然不是我目前使用的最新版本)。我能够使用下面的代码启动应用程序,但调用 webdriver.Chrome() 是一个阻塞调用,我从来没有得到驱动程序实例:

from selenium import webdriver
options = webdriver.ChromeOptions()
options.binary_location = "/home/username/electron_test/node_modules/electron/dist/electron"

options.add_argument("--app=/home/username/electron_test/")
driver = webdriver.Chrome(chrome_options=options)

谢谢。

4

2 回答 2

2
    from selenium import webdriver

    # Start the web driver
    web_driver_path = os.path.join(
        os.environ["ProgramFiles(x86)"],
        "chromedriver-v3.1.9-win32-x64",
        "chromedriver.exe")
    service = webdriver.chrome.service.Service(web_driver_path)
    service.start()

    # start the app
    self.web_driver = webdriver.remote.webdriver.WebDriver(
        command_executor=service.service_url,
        desired_capabilities={
            'browserName': 'chrome',
            'goog:chromeOptions': {
                'args': [],
                'binary': PATH_TO_BINARY_APP,
                'extensions': [],
                'windowTypes': ['webview']},
            'platform': 'ANY',
            'version': ''},
        browser_profile=None,
        proxy=None,
        keep_alive=False)

首先,您需要为 webdriver 创建一个服务实例。之后,使用服务 url 打开电子应用程序,以便他们可以相互连接。

请务必使用与您的电子版本匹配的正确 Web 驱动程序版本。

仅供参考:当您在应用程序中使用 webviews 之类的东西时,您会喜欢“windowTypes”行。我花了几个小时才弄清楚。

于 2019-12-06T10:15:07.793 回答
0

@dirk 答案是对的!goog:chromeOptions 是诀窍。谢谢!

这是我最终得到的:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

cap = DesiredCapabilities.CHROME.copy()
cap['goog:chromeOptions'] = {'binary': PATH_TO_BINARY_APP}
driver = webdriver.Remote(
    command_executor='http://127.0.0.1:4444/wd/hub',
    desired_capabilities=cap)

driver.get('http://google.com/')
于 2020-01-28T22:34:35.103 回答