【问题标题】:com.chaquo.python.PyException: ValueError: Could not get version for Chrome with this command: google-chrome --versioncom.chaquo.python.PyException:ValueError:无法使用此命令获取 Chrome 的版本:google-chrome --version
【发布时间】:2020-05-19 00:38:05
【问题描述】:

我目前正在使用 Chaquopy 将 Python 代码实现到 Android Studio 中。但是,我无法在 Python 中初始化 selenium 的 chromedriver。每当我尝试使用driver = webdriver.Chrome("/path/to/chromedriver.exe, options=opt) 行进行初始化时,我都会收到错误消息“WebDriverException:消息:'chromedriver.exe' 可执行文件可能具有错误的权限”或“WebDriverException:消息:'chromedriver' 可执行文件需要在 PATH 中”。因此,我导入了 ChromeDriverManager 并调用了driver = webdriver.Chrome(ChromeDriverManager().install(), options=opt)。运行我的程序会出现以下错误:

    Process: com.example.test3, PID: 20964
    com.chaquo.python.PyException: ValueError: Could not get version for Chrome with this command: google-chrome --version
        at <python>.webdriver_manager.utils.chrome_version(utils.py:112)
        at <python>.webdriver_manager.driver.get_latest_release_version(driver.py:58)
        at <python>.webdriver_manager.manager.__get_latest_driver_version(manager.py:21)
        at <python>.webdriver_manager.manager.__get_version_to_download(manager.py:27)
        at <python>.webdriver_manager.manager.download_driver(manager.py:36)
        at <python>.webdriver_manager.chrome.install(chrome.py:28)
        at <python>.login.web_scrape(login.py:57)
        at <python>.chaquopy_java.call(chaquopy_java.pyx:281)
        at <python>.chaquopy_java.Java_com_chaquo_python_PyObject_callAttrThrows(chaquopy_java.pyx:253)
        at com.chaquo.python.PyObject.callAttrThrows(Native Method)
        at com.chaquo.python.PyObject.callAttr(PyObject.java:209)
        at com.example.test3.LoginWaterloo$1.onClick(LoginWaterloo.java:37)
        at android.view.View.performClick(View.java:7125)
        at android.view.View.performClickInternal(View.java:7102)
        at android.view.View.access$3500(View.java:801)
        at android.view.View$PerformClick.run(View.java:27336)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

关于如何克服这个错误的任何建议?我看到一个post 有同样的问题,但无法理解答案。

【问题讨论】:

  • 问题肯定与您在变量“opt”中提供的内容有关。你能给出你在哪里给出 opt 的值并告诉我们你想用这个做什么
  • 如果 chromedriver.exe 是 Windows 可执行文件,您将无法在 Android 上运行它。据我了解 ChromeDriver 文档,他们支持在您的 Windows/Max/Linux 开发机器上使用它来控制 Android 设备,但不直接在 Android 上运行它。
  • @dylanvanw 这是我初始化 opt 的代码:opt = webdriver.ChromeOptions()opt.add_argument("--headless")。我添加了参数“--headless”,因为我希望 chromedriver 打开一个我想对用户隐藏的浏览器。
  • @mhsmith 有什么方法可以让我通过 Android 的浏览器(即 Webview)运行 chromedriver?
  • 对不起,我没用过webdriver工具,所以不知道更多。

标签: python android selenium selenium-chromedriver chaquopy


【解决方案1】:

对我来说,这适用于提供选项而不是选项参数而是 chrome_options 参数。

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(ChromeDriverManager().install(), chrome_options=chrome_options,  service_args=['--verbose', '--log-path=logs/chromedriver.log'])

【讨论】:

  • 如果是正确答案,请将其标记为正确答案。如果不只是让我知道,我可以改变我的答案来帮助你。
  • 我用以下代码替换了我的代码,得到了和上面一样的错误
猜你喜欢
  • 2021-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-01
  • 1970-01-01
  • 2018-11-25
  • 1970-01-01
  • 2020-11-06
相关资源
最近更新 更多