Python 在Selenium上上载图像/文件
我有点纠结于如何越过这个障碍。我正在尝试为Kijiji制作一个reposter,我被困在Mac上时如何处理文件上传。我试着去做Python 在Selenium上上载图像/文件,python,python-2.7,selenium,Python,Python 2.7,Selenium,我有点纠结于如何越过这个障碍。我正在尝试为Kijiji制作一个reposter,我被困在Mac上时如何处理文件上传。我试着去做 driver.find_element_by_id('ImageUploadButton').send_keys(image) 但这似乎没有任何作用,我相信这可能是因为kijiji的特殊文件上传,但我不知道如何克服这个障碍 以前有人这样做过吗 “查看源代码”页面上的代码: 至少添加一张照片。使用“更多”显示不同的角度和细节 拖放 拖放可更改图片的顺序 通过上传图像获
driver.find_element_by_id('ImageUploadButton').send_keys(image)
但这似乎没有任何作用,我相信这可能是因为kijiji的特殊文件上传,但我不知道如何克服这个障碍
以前有人这样做过吗
“查看源代码”页面上的代码:
至少添加一张照片。使用“更多”显示不同的角度和细节
拖放
拖放可更改图片的顺序
通过上传图像获得至少两倍的回复数
您最多可以上传10张照片,宽度或高度至少为300px(我们建议至少为1000px)
选择图像
您需要针对“文件”输入
元素,而不是按钮:
image_input = driver.find_element_by_id("FileUploadInput")
现在,问题是,这个元素是隐藏的,发送密钥将无法正常工作。要解决此问题,需要首先使元素可见:
我用c#编写了我的代码,但语言格式可以更改为工作。对于kijiji图像发布,我必须使用以下内容:
js.ExecuteScript("arguments[0].setAttribute('style', arguments[1])", driver.FindElement(By.XPath("//input[@type='file']")), "0");
driver.FindElement(By.XPath("//input[@type='file']")).SendKeys("path of file and filename");
注意:对每个要上传的图像重复最后一行。为文件输入元素提供
HTML
code这里是它的屏幕截图。我很确定您不能将文本发送到类型为按钮的元素。检查页面中的元素
driver.execute_script("arguments[0].type = 'file';", image_input)
image_input.send_keys(image)
js.ExecuteScript("arguments[0].setAttribute('style', arguments[1])", driver.FindElement(By.XPath("//input[@type='file']")), "0");
driver.FindElement(By.XPath("//input[@type='file']")).SendKeys("path of file and filename");