什么是 Google 图片的 ID 或 class 对应于允许您拖放图片的框?

What is Google Image's id or class that corresponds to the box that lets you drag and drop images?

我正在使用 Python Selenium 制作某种 Python 控制台版本的 Google 图片。我已经得到了它打开并单击相机图标的部分。不幸的是,我不知道允许您拖入图像的框的 id 或 class 是什么,因为当我尝试使用似乎是框的 Id 时,它说“元素不可交互” 到目前为止的代码:

from selenium import webdriver
import time

PATH = "C:\Program Files (x86)\chromedriver.exe"

driver = webdriver.Chrome(PATH)

driver.get("https://images.google.com")

print("Googlen't Images")
image_query = input("Enter path where image is: ")

cameraicon = driver.find_element_by_class_name("BwoPOe")
cameraicon.click()
time.sleep(2)
box = driver.find_element_by_id("dRSWfb") #this is the one that gives "element not interactable" error
box.send_keys(image_query)

有人能帮忙吗?

首先:错误给出的行是 send_keys(),而不是 find_... - 所以您在代码中的注释具有误导性。

问题是 "dRSWfb<div>,您无法将密钥发送到 <div>。在这个 <div> 里面是 <input>,你应该获取并发送密钥。

<input> 的 ID Ycyxxc

box = driver.find_element_by_id("Ycyxxc")
box.send_keys(image_query)

我不知道如何在 Selenium 中拖放(如果可能的话)但是 Firefox 中的 DevTools 显示事件 dragoverdrop for <div> with id QDMvGf


编辑: 要发送本地文件,您可以使用第二个选项卡上的按钮 Browse 而不是 drag'n'drop

您可以使用 id awyMjb

访问
box = driver.find_element_by_id("awyMjb")
box.send_keys(image_query)

最少的工作代码

from selenium import webdriver
import time

print("Googlen't Images")
image_query = input("Enter path where image is: ")

driver = webdriver.Chrome("C:\Program Files (x86)\chromedriver.exe")
#driver = webdriver.Firefox(executable_path='/home/furas/bin/geckodriver')

driver.get("https://images.google.com")

cameraicon = driver.find_element_by_class_name("BwoPOe")
cameraicon.click()
time.sleep(1)

# send word or url on first tab
#box = driver.find_element_by_id("Ycyxxc")
#box.send_keys(image_query)

# send local file on second tab
box = driver.find_element_by_id("awyMjb")
box.send_keys(image_query)