2014-09-26 14 views
5

OK, quindi ho usato meccanizzazione, richieste, zuppa meravigliosa e persino selenio nella mia impresa per fare qualcosa del genere e sono giunto alla conclusione che urllib e l'altro default i moduli sono il modo migliore per andare. L'unico problema è che non riesco a capire come usarlo a tutti .. Quindi qualcuno può per favore mostrarmi dei bei posti per conoscerlo in particolare? Anche io imparo meglio da esempi così se qualcuno avrebbe convertire questo a quello che sto chiedendo che sarebbe grande (anche includere un pulsante di invio lol)Compilare i dati del modulo Web usando i moduli Python integrati

from selenium import webdriver 

driver = webdriver.Firefox() 

driver.get("http://www.jonessoda.com/contests/back2school") 
element = driver.find_element_by_name("fname") 
element.send_keys("Ben") 

risposta

5

Tu fai desiderare selenio. Simula le interazioni GUI su un browser. Quando si fanno cose come inserire i dati del modulo di competizione, questo sarà il modo meno rilevabile.

Una nota sul selenio: non è una libreria specifica della lingua. Esistono associazioni specifiche per ogni lingua. La maggior parte degli esempi e le istruzioni che vedrai sono in realtà scritte in Java.

Una buona risorsa è Selenium-python

Ecco il suo esempio di lavoro. Compreso il pulsante di invio.

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
i = 2 # do it 2 times 
while i > 0: 
    driver = webdriver.Firefox() 
    driver.get("http://www.jonessoda.com/contests/back2school") 

    def find_by_xpath(locator): 
     element = WebDriverWait(driver, 10).until(
      EC.presence_of_element_located((By.XPATH, locator)) 
     ) 

     return element 

    class FormPage(object): 
     def fill_form(self, data): 
      find_by_xpath('//input[@name = "fname"]').send_keys(data['fname']) 
      find_by_xpath('//input[@name = "lname"]').send_keys(data['lname']) 
      find_by_xpath('//input[@name = "email"]').send_keys(data['email']) 
      find_by_xpath('//select[@name = "birthday_month"]').send_keys(data['month']) 
      find_by_xpath('//select[@name = "birthday_day"]').send_keys(data['day']) 
      find_by_xpath('//select[@name = "birthday_year"]').send_keys(data['year']) 

      return self # makes it so you can call .submit() after calling this function 

     def submit(self): 
      find_by_xpath('//input[@value = "Submit"]').click() 

    data = { 
     'fname': 'Sheep', 
     'lname': 'Test', 
     'email': '[email protected]', 
     'month': 'October', 
     'day': '29', 
     'year': '1920' 
    } 

    FormPage().fill_form(data).submit() 
    driver.quit() # closes the webbrowser 
    i = i - 1 
+0

Grazie mille! ESATTAMENTE quello che stavo cercando ... e io geuss GUI è abbastanza bello comunque. Sono un principiante in Python (poche settimane) Conosco la maggior parte dei comandi di base, ma uno penso che non capisco è la funzione del ciclo. Potresti modificare questo codice per avere una funzione di loop? (Anche inviare non funziona) – DarkPirate

+0

Aggiunto. Invia funziona se lo chiami. È necessario eseguire 'FormPage(). Submit()' per inviarlo. – sheeptest

+0

Inoltre, se lo fai come 1000x di fila è molto visibile che il tuo stesso indirizzo IP è lo spamming in. Vorrei esaminare la pianificazione in vari momenti casuali nel corso della giornata. – sheeptest

Problemi correlati