2012-06-27 19 views
5

मैं अजगर का उपयोग कर सेलेनियम वेबड्राइवर में क्लिक कमांड का उपयोग करने का प्रयास कर रहा हूं। लेकिन मुझे नीचे की त्रुटि मिल रही है। क्या कोई मेरी मदत कर सकता है?विशेषताइंटर: 'सूची' ऑब्जेक्ट में कोई विशेषता नहीं है 'क्लिक' - सेलेनियम वेबड्राइवर

Traceback (most recent call last): 
File "C:\Users\vikram\workspace\LDC\test.py", line 13, in <module> 
driver.find_elements_by_link_text("MISCQA Misc Tests").click() 
AttributeError: 'list' object has no attribute 'click' 

यहाँ मेरी कार्यक्रम

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.common.by import By 
from selenium.common.exceptions import NoSuchElementException 
from selenium.webdriver.support.ui import WebDriverWait 
import config 

url = config.config.get('url') 

driver = webdriver.Ie() 
driver.get(url) 

driver.find_elements_by_link_text("MISCQA Misc Tests").click() 

driver.close() 

मुझे लगता है कि मैं कुछ बात याद आ रही है है। कृपया मुझे सुझाव है

+0

driver.find_elements_by_link_text ("MISCQA Misc Test") रिटर्न सूची, कॉल करने योग्य ऑब्जेक्ट – cval

उत्तर

17

मदद करने के लिए धन्यवाद। मुझे अपने लिए जवाब मिला। "दान निएरो" द्वारा दिए गए आइडिया

समस्या यह है कि, मैं driver.find_element के बजाय driver.find_element[s] का उपयोग कर रहा हूं। तो एक अंतर बनाता है। वास्तव में मैं ग्रहण :(driver.find_elements_by_link_text रिटर्न सूची मदद करने के लिए अनुसरण कर रही हूं। जाहिर है इतना तो मैं घटना यह अभ्यस्त समझ में क्लिक करें भेजें।

धन्यवाद और मेरा बुरा सवाल

-Vikram

1

अपने कोड का हिस्सा है,

driver.find_elements_by_link_text("MISCQA Misc Tests") 

वापस एक सूची और नहीं सेलेनियम webdriver की एक वस्तु (आप क्या चाहते लौटा रहा है, वर्ग की वस्तु समारोह होने "क्लिक()")।

सबसे अधिक संभावना, सूची के तत्व वस्तुएं होंगी।

कोड के उस हिस्से के बाद सूची मुद्रित करें और जांचें कि सूची के तत्व आपके लिए आवश्यक हैं या नहीं।

+0

यह आउटपुट है जो मुझे मिलता है [] – vkrams

+0

वेबड्राइवर ड्राइवर = नया InternetExplorerDriver(); driver.get (url); \t वेबइलेमेंट तत्व = driver.findElement (By.linkText ("विविध टेस्ट")); element.click(); - यह जावा में कोड है। मैं सेलेनियम पायथन – vkrams

+1

हां में इसे अनुकरण करना चाहता हूं। ये वस्तुएं स्वयं हैं। तो, बस सूची में पुन: प्रयास करें और उन पर क्लिक() विधि को कॉल करें। उदाहरण के लिए, driver.find_elements_by_link_text ("एमआईएससीक्यूए Misc टेस्ट") [0] .click() –

8

शायद driver.find_elements_by_link_text("MISCQA Misc Tests")[0].click() या किसी अन्य सूचकांक ...

मैं सेलेनियम पता नहीं है, लेकिन मुझे लगता है कि find_elements_by_link_text एक से अधिक बात हो रही है, या हो सकता है विधि हमेशा एक ही वस्तु के बजाय एक सूची प्रदान। यदि आप पूरी तरह से सुनिश्चित हैं कि केवल एक ऑब्जेक्ट आपकी खोज का नतीजा होना चाहिए, जैसा कि मैंने उल्लेख किया है, [0] का उपयोग करने के बजाय, यदि आप यह नहीं मान सकते कि केवल एक ही वस्तु होगी, तो आपको मजबूत होने की आवश्यकता होगी रणनीति

+0

मैंने उपरोक्त कथन का उपयोग किया लेकिन कोई भाग्य नहीं। क्या आपको लगता है कि मैंने इसके लिए एक सही कक्षा आयात नहीं की है। – vkrams

+1

विक्रम, मुझे यह सेलेनियम नहीं पता है, लेकिन आपको मिली त्रुटि संदेश स्पष्ट रूप से बताता है कि आपको एक सूची वापस मिली है, इसलिए आपको उस सूची के अंदर तत्वों तक पहुंचने की आवश्यकता है ... जब आप कोशिश करते हैं तो आपको और क्या त्रुटि मिलती है ऐसा करो? –

0

बयान के लिए खेद है driver.find_elements_by_link_text("MISCQA Misc Tests") रिटर्न WebElement की एक सूची जिनमें से कुछ क्लिक करने योग्य नहीं हो सकता है।

तो तुम WebElement के लौटे की सूची के माध्यम से लूप करने के लिए है और फिर उन तत्व है जो क्लिक करने योग्य हैं पर क्लिक करें।

आप यह जांच सकते हैं कि कोई वेबलेमेंट isClickable() फ़ंक्शन का उपयोग कर क्लिक करने योग्य है या नहीं।

मैंने कोड पोस्ट नहीं किया है क्योंकि मुझे पायथन नहीं पता है। उम्मीद है कि यह आपकी मदद करता है।तो

driver.find_element_by_link_text("MISCQA Misc Tests") 

या, अगर आप पूरी सूची चाहते हैं:

+0

isClickable() बूलियन लौटाता है इसलिए इसकी आवश्यकता नहीं होती है। वैसे भी मुझे जवाब मिला – vkrams

0

अगर आप चाहते हैं एक तत्व तो यू उपयोग कर सकते हैं

for x in self.driver.find_elements_by_link_text("MISCQA Misc Tests"): 
    link = webdriver.ActionChains(self.driver).move_to_element(x).click(x).perform() 
0

अगर "MISCQA विविध टेस्ट" की विशेषता का केवल एक है, आप इस कोड 'driver.find_elements_by_link_text ("MISCQA Misc Test")' ) में तत्वों को तत्व में बदलने की कोशिश कर सकते हैं। आशा है कि समस्या ठीक हो जाएगी

संबंधित मुद्दे