gpt4 book ai didi

android - Appium - 使用 Chrome 将文件上传到网络 - ERR_ACCESS_DENIED

转载 作者:行者123 更新时间:2023-12-03 14:52:02 24 4
gpt4 key购买 nike

我正在尝试将文件上传到 https://the-internet.herokuapp.com/upload通过 Chrome 使用 Appium。但它导致ERR_ACCESS_DENIED一直出错。
该文件位于 Download我设备的文件夹。
引用下图:
enter image description here
我也尝试了以下功能以及不同的组合,但没有帮助:noReset, autoGrantPermissions, fastReset .
我的脚本 :


from appium import webdriver
import time

def execute_script():
driver = webdriver.Remote(
command_executor='http://0.0.0.0:4723/wd/hub',
desired_capabilities={
"platform": "android",
"platformName": "android",
"platformVersion": "10",
"deviceName": "<xxxx>",
"udid": "<xxxx>",
"browserName": "chrome",
"automationName": "UIAutomator2",
"chromeOptions": {
"w3c": False
},
# "autoGrantPermissions": True,
# "noReset": True,
# "fastReset": True,
# "fullReset": False
}
)

driver.get('https://the-internet.herokuapp.com/upload')

up = driver.find_element_by_id("file-upload")
up.send_keys("/sdcard/Download/file.pdf")
driver.find_element_by_id("file-submit").click()

driver.quit()

driver = execute_script()

该脚本执行良好,直到 send_keys步。但只要 file-submit执行点击,它会导致提到的错误。我试过 https://fileconvoy.com/以及它会导致相同的错误。
版本详情:
  • Appium 版本:1.17.0 (从 1.10.x1.20.x 的试用版)
  • 设备:三星 Galaxy S9,Android 10
  • Chromedriver:90.0.4430.24(也试过 Chrome 81,同样的错误)。

  • 我尝试过的所有内容:
  • 在启动 appium 之前通过以下命令显式授予权限(以及脚本中途以防权限被重置),但没有运气。
  • adb -P 5037 shell 'pm grant com.android.chrome android.permission.READ_EXTERNAL_STORAGE  android.permission.WRITE_EXTERNAL_STORAGE'
  • 而不是使用 browserName: "Chrome" ,我也试过指定appPackage and appActivity开始 Chrome 。但没有运气。

  • 有什么我从根本上想念的吗?这适用于桌面浏览器(使用 selenium)。但我无法在我的移动设备上运行一次。
    让我知道是否还有其他要分享的内容。
    在 Appium 上也创建了一个问题: https://github.com/appium/appium/issues/15293

    最佳答案

    原来,Chrome 无法访问 /sdcard/Download/自动化期间的目录。
    尝试从 /data/local/tmp/ 上传文件目录(通过先将文件推到那里)工作。
    其次,考虑到路径/sdcard/Download/的文件下载和上传场景,Android 9和Android 10+略有不同。 (尚未为此提出理由):

  • 文件下载:
  • Android 10 及更高版本不要求任何权限(即不弹出对话框)
  • Android 9(可能低于此)会打开一个对话框,询问权限。
  • 如果是文件上传:
  • 他们都没有请求任何许可,因此上传失败。

  • 因此,作为上传文件的解决方法,我们有两种方法:
  • 使用其他目录,即 /data/local/tmp/ (我发现唯一适用于 Android 10 及更高版本的东西)。
  • (对于 Android 9 和可能更低)首先下载任何文件,允许/接受请求的权限。然后继续从/sdcard/Download/上传目录。
  • 关于android - Appium - 使用 Chrome 将文件上传到网络 - ERR_ACCESS_DENIED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67213841/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com