2016-03-31 27 views
2

Bir dosya seçmek için webdriver kullanmak istiyorum ama diğer yanıtları çalışmazlar. Düğmeye bir dosya yolu ver dediler ve bu hiçbir şey yapmıyor.selenium webdriver python ile dosya yükleme

enter image description here

Bu başkalarının yapmak dediklerini ama çalışmıyor: Ben varım kez

element = driver.find_element_by_name("file") 
element.send_keys("/home/pavel/Desktop/949IH3GNHAo.jpg") 

dosyaları nasıl gönderebilirsiniz yükleme düğmesine tıkladıktan sonra şuna benzer webdriver örneği? Teşekkür ederiz

+1

"Çalışmıyor" ile ne demek istiyorsun? Ne oluyor? Gezinmekte olduğunuz URL'yi içeren eksiksiz kodu gönderebilir misiniz? Teşekkürler. – alecxe

+1

İfadeleri kullanarak görüntü dosyasını seçtikten sonra, tekrar göz atma düğmesine tıklayarak yükleme düğmesine tıklamalısınız. –

cevap

-1

Bu sorun uploading photos to Craigslist with Python and Selenium

def add_photo(self, filepath_to_photo): 
    photo_filepath_input_box = self.driver.find_element_by_xpath("//input[@type='file']") 
    photo_filepath_input_box.send_keys(filepath_to_photo) # "/home/cchilders/photos/myhouse/upperrightbedroom/photo1.png" 
0

Karşıdan yükleme pencereleri, sistem pencereleridir ve web görünümünde değildir. Selenium web gezginleri sadece bir web sayfasındaki şeyleri kontrol edebilir. Dosyayı AutoIT gibi başka bir kütüphaneye seçme görevini vermeniz gerekecektir.

+1

Emin misiniz? : https://saucelabs.com/resources/articles/selenium-file-upload –

+0

Bu stili işe yarayamadım. Tekrar deneyeceğim, tahminimce – codyc4321

2

Otomatik Dene'yi deneyin.

Kullanımı çok kolay ve iş yapıyor.

ilk webdriver komut dosyası ile yükle butonuna tıklayın ve sonra birlikte AutoIt .exe dosyasını çalıştırın: Dosya yükleme bitene kadar

import subprocess 
subprocess.Popen('[name_of_your_script].exe') 

Sonra beklenen koşulları kullanarak, bunu bir wait.until vermek, bu yüzden bekler .

bir örnek AutoIt kodu aşağıdaki "AAUPLOADFILE.png" adlı bir dosya seçecektir:

bir senaryo yazılmış var sonra
Local $hWnd=WinWait("[CLASS:#32770]","",10) 

ControlFocus($hWnd,"","Edit1") 

; Wait for 2 seconds. 

    Sleep(2000) 

    ControlSetText($hWnd, "", "Edit1", "AAUPLOADFILE.png") 

    Sleep(2000) 

; Click on the Open button 

    ControlClick($hWnd, "","Button1"); 

, dosyayı sağ tıklayın ve Derleme Komut, bir yaratacak .exe dosyası.

+0

bu mantıklı görünüyor. Dosya isminde nasıl geçeceğine dair verebileceğin bir örnek var mı? Eğer benim python betiğimde "FILENAME =" AAUPLOADFILE.png "ve diğerleri geçebilirse, heyecanlanırdım. bende olabilir miyim – codyc4321

+0

diğer sorun Windows kullanmıyorum – codyc4321

+1

Hiç otomasyon için ubuntu/linux kullanmadım, üzgünüm ve AutoIT gerçekten bir Windows uygulamasıdır. Bunu buldum, bunun Linux için bir AutoIT eşdeğeri olduğunu söylüyorlar: http://www.semicomplete.com/projects/xdotool/ – Alichino

0

de çözüldü Ben de Python ve selenyum kullanarak yükleme ile sorun vardı ediyorum. Çünkü yükleme web formu görünmüyordu ve "resim yükle" altında bulunuyordu. (gizli yükleme formu)

Bu yüzden geçici bir çözüm buldum.

# Try to open page with upload form 
driver.get('https://bla.com/library/browser') 

# Waiting for upload element with name upload-search-block 
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "upload-search-block"))) 

# Relocate hidden upload form using JS 
driver.execute_script("document.getElementById('upload-search-block').style.left='200px';") 
driver.execute_script("document.getElementById('upload-search-block').style.top='170px';") 

# And upload file in the end 
upload = driver.find_element_by_id('upload-search-block') 
upload.send_keys('/tmp/custom_doc.docx') 

İyi şanslar.