2014-09-26 12 views
5

Pekala, böyle bir şey yapmak için mekanize etme, istekleri, güzel çorbaları ve hatta selenyum kullanıyorum ve urllib ile diğer varsayılanın sonucuna vardım. Modüller gitmek için en iyi yoldur. Tek sorun, onu nasıl kullanacağımı anlayamıyorum. Birisi bana özel olarak öğrenmek için iyi yerler gösterebilir mi? Birisi çok iyi olurdu bunun için soruyorum ne bu dönüştürmek istiyorum yani eğer Ayrıca ben örneklerle iyi öğrenmek için selenyum istiyorsunDahili Python Modüllerini Kullanarak Web Formu Verilerini Doldurma

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") 

cevap

5

(ayrıca lol Gönder düğmesi ekleyin). Bir tarayıcıda GUI etkileşimlerini simüle eder. Rekabet formu verilerine girme gibi şeyler yaparken, bu en az tespit edilebilecek yol olacaktır.

Selenyum hakkında bir not: Bu dile özgü bir kitaplık değil. Her dil için müşteriye özel bağlamalar vardır. Çoğu örnek ve nasıl göreceğiniz, aslında Java'da yazılmıştır.

iyi bir kaynak Burada Selenium-python

senin çalışan bir örnektir. Gönder düğmesi dahil.

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

Çok teşekkür ederim! Tam olarak ne arıyordum ... ve ben GUI geir herhalde oldukça havalı. Python'a yeni başlayan biriyim (Birkaç hafta) En temel komutları biliyorum ama anlamadığım bir şey döngü işlevi. Döngü işlevine sahip olmak için bu kodu düzenleyebilir misiniz? (Ayrıca gönderme çalışmıyor) – DarkPirate

+0

Eklendi. Gönder, eğer ararsan işe yarıyor. Göndermek için FormPage(). Submit() 'yapmalısınız. – sheeptest

+0

Ayrıca, bir satırda 1000x gibi yaparsanız, aynı ip adresinizin gönderilerinde spam olduğunu görebiliyorsunuz. Gün içerisinde farklı rastgele zamanlarda programlamaya bakacağım. – sheeptest

İlgili konular