簡體   English   中英

無法保存使用 Python Selenium 上傳的文件

[英]Trouble saving file uploaded using Python Selenium

我正在使用 Python 在 Selenium 中工作,並且正在使用 Chrome。 當我進入圖片上傳部分時,我會執行以下操作:

    pictureChange = driver.find_element_by_xpath("//input[@class='custom-file' and @type='file']")
    photoLocation = [I enter the file location on my locally mapped drive]
    pictureChange.send_keys(photoLocation)

這似乎按預期工作,並且在保存新圖片之前,圖片會彈出用於裁剪/縮放的疊加層。 疊加層是 div class="modal-box" id="croppicModal"。 我能夠與圖片進行交互以縮小和諸如此類。 但是當我單擊“保存”(手動或使用我的程序)時,新圖片不會保存。 疊加層剛剛消失,舊圖片仍在顯示。 如果我手動選擇要上傳的文件,然后單擊“保存”,它可以正常工作。 只是當我使用 send_keys 命令上傳照片時,我實際上無法保存它。 任何想法為什么? 這是保存按鈕:

    <div class="action-btns"><span class="save-btn rounded-btn">Save</span><span class="croppic-cancel white-btn cancel-btn">Cancel</span></div>

如果文件仍在通過您的send_keys策略上傳,我認為問題不在於上傳,而在於用於保存文件的方法。 我不確定您使用的是什么點擊策略,但您可以嘗試使用一些 Javascript 進行更改。

# locate save button
save_button = driver.find_element_by_xpath("//span[text()='Save']")

# click save button with JS
driver.execute_script("arguments[0].click();", save_button) 

如果這不起作用,我們可能會更改您上傳文件的方式,看看是否有幫助。 但我不相信實際上傳是這里的問題。

我會嘗試使用WebDriverWait

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

wait = WebDriverWait(driver, 10)
picture_change = wait.until(EC.element_to_be_clickable((By.XPATH, "//input[@class='custom-file' and @type='file']")))
photo_location = "Path/to/the/file"
picture_change.click()
picture_change.send_keys(photo_location)

save_button = wait.until(EC.element_to_be_clickable((By.XPATH, "//span[text()='Save']")))
save_button.click()

僅供參考:python 約定是對變量使用小寫字母

您正在嘗試單擊不是按鈕的 div 元素。 您需要找到與您嘗試單擊的按鈕相對應的帶有“按鈕”標簽的元素

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM