Bas*_*sia 4 python selenium file-upload selenium-webdriver python-3.5
我必须上传文件 (drop zone -> click ->open window to choose file)
我试过了:
addphoto.send_keys("C:\\files\\file.jpg")
Run Code Online (Sandbox Code Playgroud)
但它不起作用。是否有任何机器人可以在新窗口打开时处理?
将文件名放在 dropzone 隐藏输入中可以正常工作。这应该能让你继续前进。
upload_file = driver.find_element_by_css_selector('.dz-hidden-input')
data_file = Path(__file__).parent / "test_file.txt"
logging.debug("data_file: %s", data_file)
assert data_file.exists()
upload_file.send_keys(str(data_file))
assert driver.find_element_by_css_selector('.dz-image').is_displayed()
Run Code Online (Sandbox Code Playgroud)
一般来说,不会。
Selenium 只能操作您的网络浏览器。当您单击打开文件浏览器窗口的任何类型的元素时,该窗口是由您的操作系统而不是 Web 浏览器提供的。这就是为什么你不能在 selenium 中与它交互。
如果您的网页接受拖放,您可能可以通过使用 sendkeys 发送类似 file://path/to/your/file 之类的内容来欺骗它,因为这就是拖放实际上所做的事情,然后使用操作链将鼠标移至该元素并通过向该元素发送释放按钮事件来执行“放下”。例如,请参阅无法在 selenium python 中执行单击操作
了解如何使用动作链的想法。
然而,这是众所周知的不可靠。如果您计划自动发布帖子,例如社交媒体网站,那么您可能不走运,因为它们的上传机制稍微复杂一些,无法防止使用机器人发送垃圾邮件。
您可能想要研究能够控制计算机的整个 GUI 而不仅仅是浏览器的工具。然后,您可以使用 Selenium 尝试定位拖放字段的绝对位置,并将其提供给外部自动化脚本,该脚本单击您的图像,将其拖到该位置并将其放置在那里。
汉努
| 归档时间: |
|
| 查看次数: |
2207 次 |
| 最近记录: |