2016-04-02 16 views
2

yılında değer girerek. Bir katılım web sayfasındaki içerik tablo şeklindedir. 'A' veya 'P' olarak işaretlediğimiz bir metin kutusu var. Kaynak kodu aşağıdaki gibidir:Python Selenyum - Ben öğrencilerimizin katılımı otomatik girişe piton selenyum kullanıyorum bir metin kutusu

<form name="attendance1" action="/sjcet/attendance.php" method="POST"> 
        <table style="width: 65%; margin: auto;"> 
         <tr> 
          <th style="text-align: center;">Roll No.</th> 
          <th style="text-align: center;">PID</th> 
          <th style="text-align: center;">Student Name</th> 
          <th style="text-align: center;">Status</th> 
          <th style="text-align: center;">Any Comment</th> 
         </tr> 
                 <tr style="text-align: center;"> 
           <td style="text-align: center;"> <input name="roll_no[]" tabindex="0" size="3" type='text' value = '1' readonly='readonly' style="text-align: center;" /> </td> 
           <td style="text-align: center;"> <input name="pid[]" tabindex="0" size="10" type='text' value = 'EU1124021' readonly='readonly' style="text-align: center;" /> </td> 
           <td style="text-align: left;"> Abraham Ancy Chandy Anne</td> 
           <td style="text-align: center;"> 
            <input size="3" name="status[]" type="text" onkeypress="return isNumberKey(event)" maxlength ="1" tabindex="1" 
              style="text-align: center;" value='A' /> 
           </td> 
           <td style="text-align: center;"> 
            <input size="20" name="comment[]" type="text" /> 
                     </td> 
          </tr> 
                  <tr style="text-align: center;"> 
           <td style="text-align: center;"> <input name="roll_no[]" tabindex="0" size="3" type='text' value = '2' readonly='readonly' style="text-align: center;" /> </td> 
           <td style="text-align: center;"> <input name="pid[]" tabindex="0" size="10" type='text' value = 'EU2134011' readonly='readonly' style="text-align: center;" /> </td> 
           <td style="text-align: left;"> Barabde Pranjal Sanjiv Sudha</td> 
           <td style="text-align: center;"> 
            <input size="3" name="status[]" type="text" onkeypress="return isNumberKey(event)" maxlength ="1" tabindex="2" 
              style="text-align: center;" value='A' /> 
           </td> 
           <td style="text-align: center;"> 
            <input size="20" name="comment[]" type="text" /> 
                     </td> 
          </tr> 

biz 'P' veya 'A' aşağıdaki gibidir yazdığınız metin kutusunun kodu: Varsayılan olarak

<input size="3" name="status[]" type="text" onkeypress="return isNumberKey(event)" maxlength ="1" tabindex="1" 
              style="text-align: center;" value='A' /> 
... 
... 
... 
<input size="3" name="status[]" type="text" onkeypress="return isNumberKey(event)" maxlength ="1" tabindex="2" 
              style="text-align: center;" value='A' /> 

değeri 'A' olan,

driver.find_element_by_css_selector("input[tabindex='1']").send_keys('P') 

Ben de

driver.find_element_by_xpath("//input[@tabindex='1']").send_keys('P') 
çalıştı: oldu ben piton selenyum ve denedim kodu kullanarak değeri 'P' girmeye çalıştı

Ama 'P' metin değişiyor değil, imleç bu metin kutusuna gidiyor. Sorun ne olabilir? 'Onkeypress' olayı yüzünden mi? Lütfen bana yardım et, ben python selenium için yeniyim. aşağıdaki gibi

isNumberKey (olay) için kodudur: Herşeyden

function isNumberKey(evt) 
{ 
    var charCode = (evt.which) ? evt.which : event.keyCode 

    if(charCode != 8){ 
     if(charCode != 112) 
     { 
      if(charCode != 80) 
      { 
       if(charCode != 97) 
       { 
        if(charCode != 65) 
        { 
         return false; 
        } 
       } 
      } 
     } 
    } 
    return true;      
} 

cevap

6

P yazarken senin sorununa gelince

driver.find_elements_by_css_selector("input[name^='status']") 

, lütfen temiz gerekiyor bunun false döndüren olabilir, yani javascript isNumberKey(event) ne yaptığını kontrol etmek isteyebilirsiniz orada varsayılan A değer olduğundan ilk alana up: Ayrıca

for elm in driver.find_elements_by_css_selector("input[name^=status]"): 
    elm.clear() 
    elm.send_keys('P') 

, hızlı ve kirli çözüm olabilir b cevap için

for elm in driver.find_elements_by_css_selector("input[name^=status]"): 
    driver.execute_script("arguments[0].removeAttribute('onkeypress');", elm) 
    elm.send_keys('P') 
+0

Cevabınız için teşekkür ederiz. Kodu çalıştırdım ama metin kutusuna 'P' değeri girilmiyor. Metin kutusu sadece klavyeden 'P', 'A', 'p' ve 'a' kabul etmektedir. Bunu böyle yapmanın bir yolu var mı? – Jeril

+0

@ user2825570 Bağlantıyı, bulunduğunuz sayfayla paylaşır mısınız? Teşekkürler. – alecxe

+0

Teşekkürler. Html dosyasını tinyupload [dot] com kullanarak yükledim. Bu indirilebilir [burada] (http://s000.tinyupload.com/download.php?file_id=07815236747065523698&t=0781523674706552369834900) dosya adı att [nokta] html 'dir. Asıl web sitesine sadece üniversite LAN'ımızdan erişilebilir. – Jeril

1

Öncelikle, seçici olmayan öğrencilerin bir listesinde için tek öğrenci (birinci) için çalışacaktır. gibi bir şey olmalı: A veya

+0

Teşekkür: e onkeypress niteliği kaldırın. Ancak sorun, 'P' değerini, box_keys ('P') kullanarak metin kutusuna veremem. Değeri geçmek için başka bir yolu var mı. Ayrıca, isNumberKey() işlevini ekleyerek soruyu düzenledim. 'Tabindex = 1' – Jeril

+0

JS gayet iyi görünüyor, önerildiği gibi Sorgunuzla değiştirmeyi deneyin (ve bir foreach döngüsü koymak veya listeden ilk öğesini seçmek) Kod, sadece bir tabindex = 1 idi ve kodum imleci tam metin kutusuna konuşuyordu, ancak metin kutusuna 'P' değeri girilmiyor. Metin kutusu, yalnızca klavyeden 'P' değeri basılı olduğunda konuşuyor. Klavyeden verildiği gibi selenyum kullanarak 'P' değerini vermenin bir yolu var mı? –

+0

Aradım kaynağı ile sayfadaki diğer giriş öğeleri olabilir çünkü – Jeril