首页 > 解决方案 > 处理 selenium python 中的“从计算机中选择”按钮(上传文件)

问题描述

我正在尝试创建一个 Instagram 机器人来发布一些东西,我正在使用 Selenium 网络驱动程序来实现这一点。点击“新帖子”后,我想从我的电脑中选择一张图片,但是我不知道如何使用机器人来做到这一点。

图片

我尝试找到“从计算机中选择”按钮并使用send_keys,但这不起作用。

def Post(self,items):
    self.driver.find_element_by_css_selector('svg[aria     label="New Post"]').click()
    select_file=self.driver.find_element_by_css_selector('body > div.RnEpo.gpWnf.Yx5HN > div.pbNvD > div > div > div > div.uYzeu > div._C8iK > div > div.qF0y9.Igw0E.rBNOH.YBx95._4EzTm.T9mq-.nGS-Y > div.qF0y9.Igw0E.rBNOH.eGOV_.ybXk5._4EzTm.kEKum > div > button')
    select_file.send_keys('D:\project\python\digikala\images\download.jpg')

    # path="D:\\\\project\\\\python\\\\digikala\\\\images\\\\download.jpg"
    # script = "document.querySelector('body > div.RnEpo.gpWnf.Yx5HN > div.pbNvD > div > div > div > div.uYzeu > div._C8iK > div > div.qF0y9.Igw0E.rBNOH.YBx95._4EzTm.T9mq-.nGS-Y > div.qF0y9.Igw0E.rBNOH.eGOV_.ybXk5._4EzTm.kEKum > div > button').value='" + path + "';"
    #self.driver.execute_script(script)

    for item in items:
        pass

标签: pythonselenium-webdriverinstagram

解决方案


我在使用 find_elements_by_css_selector 时遇到了同样的问题。但它适用于 find_elements_by_xpath,如下所示:

select_file = self.driver.find_elements_by_xpath('/html/body/div[8]/div[2]/div/div/div/div[2]/div[1]/form/input')
select_file[0].send_keys("D:\\\\project\\\\python\\\\digikala\\\\images\\\\download.jpg")

在这种情况下,select_file返回一个列表,因此您需要使用select_file[0].send_keys('image path')来发送您的图像。


推荐阅读