【问题标题】:Selenium file upload url "path is not absolute"Selenium 文件上传 url “路径不是绝对的”
【发布时间】:2015-08-07 18:46:40
【问题描述】:

我正在尝试使用 selenium chromedriver 将文件上传到 facebook 组。

driver.find_element_by_xpath("//input[@type='file']").send_keys("http://www.peta.org/wp-content/uploads/2013/10/goat_2D00_list_2D00_1.jpg")

但它会抛出这样的异常:

selenium.common.exceptions.WebDriverException:消息:未知错误: 路径不是绝对的:

我使用的是 Windows 10、Chrome 44.0.2403.130、ChromeDriver 2.16.333243、selenium 2.47.1

那么我如何从 url 上传图片? (无需显式下载)

【问题讨论】:

    标签: python selenium webdriver selenium-chromedriver


    【解决方案1】:

    不,这样你只能从本地机器上传文件

    driver.find_element_by_xpath("//input[@type='file']").send_keys("/Path/to/the/file")
    

    先下载图片,再上传。例如:

    使用 urllib

    import os
    import urllib
    
    base_dir = "/Path/to/dir/"
    path_to_image = os.path.join(base_dir, "upload.jpg")
    
    urllib.urlretrieve("http://www.peta.org/wp-content/uploads/2013/10/goat_2D00_list_2D00_1.jpg", path_to_image)
    
    driver.find_element_by_xpath("//input[@type='file']").send_keys(path_to_image)
    

    有请求

    import os
    import requests
    
    base_dir = "/Path/to/dir/"
    path_to_image = os.path.join(base_dir, "upload.jpg")
    
    response = requests.get("http://www.peta.org/wp-content/uploads/2013/10/goat_2D00_list_2D00_1.jpg")
    
    if response.status_code == 200:
        f = open(base_dir + path_to_image, 'wb')
        f.write(response.content)
        f.close()
    

    【讨论】:

    • 很遗憾听到没有下载是不可能的:(感谢您的回答。我已经对其进行了编辑以添加请求 sn-p,希望您喜欢它!
    【解决方案2】:

    使用"C:\\Users\\Casper\\Desktop\\hello.jpg" 之类的完整路径,而不是"hello.jpg"

    【讨论】:

      猜你喜欢
      • 2016-04-20
      • 2015-05-15
      • 2016-09-12
      • 2021-10-18
      • 1970-01-01
      • 2010-11-20
      • 2011-01-11
      • 1970-01-01
      • 2016-07-23
      相关资源
      最近更新 更多