【问题标题】:nw.js chromedriver won't run from outside of the project foldernw.js chromedriver 不会从项目文件夹之外运行
【发布时间】:2019-03-22 16:32:11
【问题描述】:

我正在尝试使用 selenium-python 和 chromedriver 在基于 nw.js 的应用程序上设置自动化测试,出于实际原因(经常重新安装......)我想将 chromedriver 与另一个文件夹中的其余文件分开.仅当 chromedriver 与项目的其余部分(以及 nw.exe)位于同一文件夹中时,我的测试才有效。如果我尝试将它放在其他任何地方并相应地使用“binary_location”、“chrome_driver_binary”和“add_argument”更改路径,我总是会遇到诸如

之类的异常

selenium.common.exceptions.WebDriverException:消息:未知错误: 找不到 Chrome 二进制文件

selenium.common.exceptions.WebDriverException:消息:未知错误: 创建 Chrome 进程失败

Nw.js documentation 没有帮助,因为它只说了以下内容:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("nwapp=/path/to/your/app")

driver = webdriver.Chrome(executable_path='/path/to/nwjs/chromedriver', chrome_options=chrome_options)

提前感谢您的任何想法。

【问题讨论】:

    标签: selenium selenium-chromedriver nw.js


    【解决方案1】:

    我能够做到这一点,但我使用了 ruby​​。应该可以翻译成python。

    我也在运行 Ubuntu 20.04。不知道这是否可以在 Windows 中运行。

    chrome_options.add_argument("nwapp=/path/to/your/app")

    此行没有指定,但 nwapp 应该是一个目录。 如果你使用 phoenix builder 构建你的应用程序,那么你可能在 package.json 中有这样一行:

    "package:linux": "npm run build:prod && build --tasks linux-x64 --mirror https://dl.nwjs.io/ .",
    

    对我来说,这个命令会创建一个名为 packages/myapp-0.0.1-linux-x64 的目录 在里面你应该看到一个可执行的“myapp”和清单“package.json”

    nwapp= 行应该指向这个目录。它将使用清单文件来获取应用程序名称。在看起来像这样的红宝石中:

    myapp_dir   = File.join(root_dir, 'packages', 'myapp-0.0.1-linux-x64')
    chrome_options.add_argument("nwapp=" + myapp_dir)
    

    executable_path='/path/to/nwjs/chromedriver'

    当你用 npm 安装 nw.js 时,它会创建一个目录树: node_modules/nw/nwjs 在那个目录里面是 chromedriver 可执行文件。

    “executable_path”是 chromedriver 可执行文件的完整路径。在 ruby​​ 中,它看起来像这样:

    chromedriver_path = File.join(root_dir, 'node_modules', 'nw', 'nwjs', 'chromedriver')
    Selenium::WebDriver::Chrome::Service.driver_path = chromedriver_path
    @driver = Selenium::WebDriver.for :chrome, options: chrome_options
    

    Ruby 执行与调用它的位置相关的所有操作,因此我在我的 nw.js 应用程序的根目录中添加了一个脚本,然后将此行添加到 package.json:

    "e2e": "ruby ./e2e.rb"
    

    然后通过npm run e2e运行

    【讨论】:

      猜你喜欢
      • 2017-11-16
      • 1970-01-01
      • 1970-01-01
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 2015-05-18
      • 1970-01-01
      相关资源
      最近更新 更多