python - 处理 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
解决方案
我在使用 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')
来发送您的图像。
推荐阅读
- c# - Unity 3D 中的移动平台
- tensorflow - Some folds in k-fold cross-validation containing 0 True/False positives
- ios - Remove Select Photos... option on PHPhotoLibrary.requestAuthorization
- javascript - 尝试添加动态输入和标签
- java - Local Tomcat not running on intellij
- javascript - 如何处理 Net Core 中的 net::ERR_INTERNET_DISCONNECTED 错误
- javascript - 使用本地护照时如何判断客户端是否经过身份验证?
- reactjs - React.FunctionComponent with generics in typescript
- sql - Why do I get a "data type conversion error" with ExecuteNonQuery()?
- javascript - 反应只是有时会抛出无法映射未定义的属性'map'