2013-02-12 33 views
8

का उपयोग कर वेब एप्लिकेशन से तालिका में पंक्तियों में से कोई भी पंक्तियों की गणना कैसे करें सेलेनियम पायथन वेब ड्राइवर का उपयोग करके वेब एप्लिकेशन से तालिका में पंक्तियों की गणना कैसे करें। यहां हम वेब एप्लिकेशन से तालिका में सभी डेटा पुनर्प्राप्त कर सकते हैं लेकिन पंक्तियों और स्तंभों की गणना नहीं कर सका, कृपया मुझे यह कैसे करना है इसका विचार दें।सेलेनियम पायथन वेबड्राइवर

उत्तर

16

इस

int rowCount=driver.findElements(By.xpath("//table[@id='DataTable']/tbody/tr")).size(); 

int columnCount=driver.findElements(By.xpath("//table[@id='DataTable']/tbody/tr/td")).size(); 

FYI करें जैसे कुछ बात का प्रयास करें: यह जावा में कार्यान्वयन है।

+1

मैं अजगर वेब ड्राइवर का उपयोग कर रहा हूं। यह आकार() फ़ंक्शन वहां काम नहीं कर रहा है। –

+1

इस लिंक को देखें: http://selenium.googlecode.com/git/docs/api/py/webdriver_remote/selenium.webdriver.remote.webelement.html#selenium.webdriver.remote.webelement.WebElement.find_elements_by_xpath ---- ---> मुझे लगता है कि पाइथन लेन सूची की लंबाई/आकार खोजने का तरीका है – Santoshsarma

2

सेलेनियम में XPath परिणाम की गणना करने के लिए एक फ़ंक्शन है, http://release.seleniumhq.org/selenium-core/1.0/reference.html देखें। इसके अनुसार आप storeXpathCount का उपयोग कर सकते हैं।

मैं सेलेनियम-जावा-ग्राहक-चालक, जहां मैं उपयोग कर सकते हैं (यह भी जावा में) के बाद से DefaultSelenium वर्ग का उपयोग कर रहा:

int rowCount = selenium.getXpathCount("//table[@id='Datatable']/tbody/tr").intValue() 
7

Santoshsarma का जवाब, जावा के लिए सही करने के लिए करीब है, लेकिन यह स्तंभों की संख्या के बजाय कोशिकाओं की संख्या गिनती होगी। यहाँ एक अजगर संस्करण है कि पहली पंक्ति में स्तंभों की संख्या की गणना होती है: यदि आप कॉलम वहाँ के बजाय गिनती कर सकता है अपनी मेज एक हैडर है

row_count = len(driver.find_elements_by_xpath("//table[@id='DataTable']/tbody/tr")) 
column_count = len(driver.find_elements_by_xpath("//table[@id='DataTable']/tbody/tr/td")) 

हैं।

मैंने storeXpathCount का उपयोग करने की कोशिश नहीं की है।

2

आप इसे find_elements_by या execute_script का उपयोग करके कर सकते हैं।

rows_count = driver.execute_script("return document.getElementsByTagName('tr').length") 
columns_count = driver.execute_script("return document.getElementsByTagName('tr')[0].getElementsByTagName('th').length") 
:

find_elements_by के परिणाम पर len लगाने से गिनती प्राप्त कर रहा है execute_script का उपयोग करके पंक्तियों और स्तंभों की गिनती हो रही काफी तेजी से तो find_elements_by विधि कॉल का परिणाम से len हो रही है अन्य बदले में सही तरीका है हालांकि,

from timeit import timeit 

# Time metrics of retrieving 111 table rows 
timeit(lambda:driver.execute_script("return document.getElementsByTagName('tr').length"), number=1000) 
# 5.525 
timeit(lambda:len(driver.find_elements_by_tag_name("tr")), number=1000) 
# 9.799 
timeit(lambda:len(driver.find_elements_by_xpath("//table/tbody/tr")), number=1000) 
# 10.656 

# Time metrics of retrieving 5 table headers 
timeit(lambda:driver.execute_script("return document.getElementsByTagName('tr')[0].getElementsByTagName('th').length"), number=1000) 
# 5.441 
timeit(lambda:len(driver.find_elements_by_tag_name("th")), number=1000) 
8.604 
timeit(lambda:len(driver.find_elements_by_xpath("//table/tbody/th")), number=1000) 
# 9.336 
:

नीचे execute_script बनाम find_elements_by का उपयोग कर दृष्टिकोण का प्रदर्शन मेट्रिक्स है

0

पायथन उपयोगकर्ताओं के लिए टैग की गणना करने का सरल तरीका निम्नानुसार है।

!#use find_elements_by_xpath 

test_elem = self.driver.find_elements_by_xpath("//div[@id='host-history']/table[1]/tbody[1]/tr") 

!#then check the len of the returnes list 

print (len(test_elem))