2011-11-28 3 views
7

मैं webdriver in Python का उपयोग कर एक HTML फॉर्म में textarea की सामग्री प्राप्त करने का प्रयास कर रहा हूं।मैं वेबड्राइवर के साथ टेक्स्टरेरा की टेक्स्ट सामग्री कैसे प्राप्त करूं?

मुझे टेक्स्ट मिल रहा है, लेकिन न्यूलाइन गायब हैं। selenium docs बहुत बेकार हैं; वे कहते हैं:

वर्ग selenium.webdriver.remote.webelement.WebElement (माता-पिता, id_)

[...]

पाठ: तत्व का पाठ हो जाता है।

मैं वर्तमान में निम्नलिखित कर रहा हूँ:

from selenium import webdriver 

# open the browser and web site 
b = webdriver.Firefox() 
b.get('http://www.example.com') 

# get the textarea element 
textbox = b.find_element_by_name('textbox') 

# print the contents of the textarea 
print(repr(textbox.text)) 

यह, पाठ क्षेत्र सामग्री का अजगर यूनिकोड स्ट्रिंग के प्रतिनिधित्व प्रिंट को छोड़कर सभी नई-पंक्तियों रिक्त स्थान ने ले ली है। रवींद्र!

सुनिश्चित नहीं है कि मुझे टेक्स्ट एन्कोडिंग समस्या का सामना करना पड़ रहा है, सेलेनियम/वेबड्राइवर बग (इसे ट्रैकर में नहीं मिला), या उपयोगकर्ता त्रुटि।

क्या ऐसा करने का कोई अलग तरीका है?

संपादित करें: मैंने अभी क्रोम को एक कोशिश दी है ... ठीक काम करता है। मैंने सेलेनियम के अंक ट्रैकर को bug की सूचना दी। सैम का वर्कअराउंड (नीचे स्वीकृत उत्तर) फ़ायरफ़ॉक्स में एक चेतावनी के साथ काम करता है: प्रतीकों को लौटाई गई स्ट्रिंग में HTML इकाई कोड में परिवर्तित कर दिया जाता है। यह no big deal है।

उत्तर

4

वर्कअराउंड के रूप में आप आंतरिक HTML प्राप्त करने के लिए ExecuteScript का उपयोग करने का प्रयास कर सकते हैं। मैं एक अजगर पुरुष नहीं हूँ, लेकिन यहाँ यह सी # में है: टैग पाठ क्षेत्र के

IWebElement element = ... 
String returnText = ((IJavaScriptExecutor)webDriver).ExecuteScript("return arguments[0].innerHTML", element).ToString(); 
+0

ग्रेट सुझाव। यह लगभग पूरी तरह से काम करता है। एकमात्र मुद्दा यह है कि परिणामी स्ट्रिंग में प्रतीकों का उनके HTML इकाई कोड में अनुवाद किया जाता है। यानी '' '' < 'बन जाता है, और इसी तरह। मैंने कुछ निम्न स्तर के पायथन मंत्रों को डाला और उस मुद्दे को कम कर दिया। –

+4

संदर्भ के लिए, समकक्ष पायथन कोड 'text = my_web_driver.execute_script ("वापसी तर्क [0] .innerHTML", textarea_element) 'है। –

+1

पायथन में, 'xml.sax.saxutils.unescape (टेक्स्ट)' '' '' '' ''इकाइयों से बाहर निकलता है। –

7

मैं बस मिल गया है विशेषता मान। नीचे जावा कोड का नमूना है।

WebElement textarea = driver.findElement(By.id("xf-1242"));   
String text = textarea.getAttribute("value"); 
log.debut(text); 

मैं क्रोम ड्राइवर का उपयोग कर रहा है, और कोड ऊपर लॉग में नई-पंक्तियों के साथ एक पाठ (मेरे मामले में एक्सएमएल) डाल दिया। मैं अजगर में जनवरी

0

http://www.w3schools.com/jsref/dom_obj_textarea.asp

से विचार आया पहला तत्व मिलता है, और के बाद विशेषता मान मिलता है, अजगर get_attribute ('मान') में कार्य करते हैं।

from selenium import webdriver 

driver = webdriver.Firefox() 
URL = "http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_textarea" 
driver.get(URL) 
driver.switch_to.frame("iframeResult") 
# get the textarea element by tag name 
textarea = driver.find_element_by_tag_name('textarea') 

# print the attribute of the textarea 
print(textarea.get_attribute('value')) 
print(textarea.get_attribute('rows')) 
print(textarea.get_attribute('cols')) 
संबंधित मुद्दे