Как загрузить изображение в скрытый элемент, используя Selenium и Python - PullRequest
1 голос
/ 03 февраля 2020

Я пытаюсь загрузить изображение внутри кнопки, но получаю эту ошибку:

selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
(Session info: chrome=79.0.3945.130)

Это мой код

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait

import time
import os

driver = webdriver.Chrome()
driver.get("https://easypdf.com/fr/convertir-ocr")
driver.maximize_window()

time.sleep(10)
driver.find_element_by_xpath('//*[@id="social"]/div/div[1]').click()

uploadPhotoBtn = driver.find_element_by_xpath('//*[@id="dzupload"]/div')
driver.execute_script('arguments[0].style = ""; arguments[0].style.display = "block"; arguments[0].style.visibility = "visible";', uploadPhotoBtn)
uploadPhotoBtn.send_keys("C:\\Users\\basma\\Desktop\\python\\toImg\\jpg0.jpg")

1 Ответ

0 голосов
/ 03 февраля 2020

Чтобы загрузить изображение для конвертации на веб-сайте https://easypdf.com/fr/convertir-ocr с использованием Selenium вам необходимо:

  • Найдите тег <input>, где у вас есть для вызова send_keys()
  • Измените значение атрибута type с hidden на text
  • Invoke send_keys()
  • Блок кода:

    from selenium import webdriver
    
    options = webdriver.ChromeOptions() 
    options.add_argument("start-maximized")
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    driver = webdriver.Chrome(options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    driver.get("https://easypdf.com/fr/convertir-ocr")
    element = driver.find_element_by_xpath("//input[@id='tool-name']")
    driver.execute_script("document.getElementById('tool-name').setAttribute('type','text')")
    element.click()
    element.clear()
    element.send_keys(r'C:\Users\Debanjan.B\Desktop\screenshots\31_07_2019.png')
    
  • Снимок браузера:

image_upload


Обновление

Это будет немного сложнее загрузить файл image для дальнейшей обработки, поскольку веб-страница https://easypdf.com/fr/convertir-ocr защищена Invisible reCAPTCHA .

<div class="rc-anchor rc-anchor-invisible rc-anchor-light  rc-anchor-invisible-hover"><div id="recaptcha-accessible-status" class="rc-anchor-aria-status" aria-hidden="true">Veuillez valider le test reCAPTCHA.. </div><div class="rc-anchor-error-msg-container" style="display:none"><span class="rc-anchor-error-msg" aria-hidden="true"></span></div><div class="rc-anchor-normal-footer smalltext" aria-hidden="true"><div class="rc-anchor-logo-large" role="presentation"><div class="rc-anchor-logo-img rc-anchor-logo-img-large"></div></div><div class="rc-anchor-pt"><a href="https://www.google.com/intl/fr/policies/privacy/" target="_blank">Confidentialité</a><span aria-hidden="true" role="presentation"> - </span><a href="https://www.google.com/intl/fr/policies/terms/" target="_blank">Conditions</a></div></div><div class="rc-anchor-invisible-text"><span>protection par <strong>reCAPTCHA</strong></span><div class="rc-anchor-pt"><a href="https://www.google.com/intl/fr/policies/privacy/" target="_blank">Confidentialité</a><span aria-hidden="true" role="presentation"> - </span><a href="https://www.google.com/intl/fr/policies/terms/" target="_blank">Conditions</a></div></div></div>

Следовательно, когда вы попытаетесь нажать кнопку для конвертации, вы увидите следующим образом:

  • Кодовый блок:

    driver.get("https://easypdf.com/fr/convertir-ocr")
    element = driver.find_element_by_xpath("//input[@id='tool-name']")
    driver.execute_script("document.getElementById('tool-name').setAttribute('type','text')")
    element.click()
    element.clear()
    element.send_keys(r'C:\Users\Debanjan.B\Desktop\screenshots\31_07_2019.png')
    driver.find_element_by_xpath("//button[@id='btnUpload']").click()
    
  • Снимок браузера:

invisible_reCAPTCHA

...