Python. Селен. Загрузить файл без тега ввода - PullRequest
0 голосов
/ 30 марта 2020

Вот зона сброса HTML

<dropzone _ngcontent-c80="" accept="image/jpg,image/jpeg,image/png" _nghost-c81="">
<div _ngcontent-c81="" class="content">
<div _ngcontent-c80="" class="drop-image-icon half-margin-bottom" iconid="drop-image" svg-icon="" vb="0 0 64 48" _nghost-c4="">
<svg _ngcontent-c4="" viewBox="0 0 64 48">
<use _ngcontent-c4="" xlink:href="https://core-stg1.teradek.com/app/kovalyovfortests/studio/assets#drop-image">
</use>
</svg>
</div>
<div _ngcontent-c80="" class="primary">Drop an image here</div>
<div _ngcontent-c80="" class="primary half-margin-top half-margin-bottom">— or —</div>
<a _ngcontent-c80="" class="secondary">Select an image from your computer</a>
</div>
</dropzone>

Я попытался отправить файл с

driver.find_element_by_xpath('//*[@iconid="drop-image"]').send_keys('/home/user/pic/3-1.png')

и получить трассировку:

selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable

Как отправить файл в рабочую зону с помощью .send_keys?

PS Он работает с

import pyautogui

find_by_xpath('//*[@iconid="drop-image"]').click()

pyautogui.write(/home/user/pic/3-1.png, interval=0.25)
pyautogui.press('return')

1 Ответ

1 голос
/ 30 марта 2020

Другой альтернативный sendkey метод, вы можете использовать Action класс:

element = driver.find_element_by_xpath('...')
action = ActionChains(driver)
action.move_to_element(element).send_keys('/home/user/pic/3-1.png').perform()

После импорта:

from selenium.webdriver import ActionChains
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...