2011-02-07 15 views
5

में सीएसएस चयनकर्ता में ब्रैकेट [?] के साथ समस्या मेरी लिपि है जो जांच तत्व है। जब मैं इस चयनकर्ता दे: सेलेनियम IDE मेंसेलेनियम-पायथन

css=input[name='flightSearchParam[3].originAirport'] 

यह मुझे इस तत्व मिल जाए, लेकिन जब मैं सेलेनियम में इस चलाने यह नहीं मिल सकता है rc। मुझे लगता है कि यह ब्रैकेट के साथ एक समस्या है।

सेलेनियम आरसी द्वारा इस तत्व को खोजने के लिए मुझे क्या बदलना होगा?

मैं Windows XP और पोलिश संस्कृति में इसे चलाने

स्क्रिप्ट चलाने के लिए तैयार है।

के लिए
# -*- coding: utf-8 -*- 
from selenium import selenium 
import unittest, time, re 

class Untitled(unittest.TestCase): 
    def setUp(self): 
     self.verificationErrors = [] 
     self.selenium = selenium("localhost", 5555, "*chrome", "http://www.aa.com/") 
     self.selenium.start() 


def test_untitled(self): 
    sel = self.selenium 
    sel.open("/international/internationalSplashAccess.do?countryCodeForIP=PL") 
    sel.click("localeSubmit") 
    sel.wait_for_page_to_load("30000") 
    for i in range(60): 
     try: 
      if sel.is_element_present("aa-hp-multi-city-link2"): break 
     except: pass 
     time.sleep(1) 
    else: self.fail("time out") 
    sel.click("aa-hp-multi-city-link2") 
    sel.click("flightSearchForm.button.reSubmit") 
    sel.wait_for_page_to_load("30000") 

    for i in range(60): 
     try: 
      if sel.is_element_present(u"css=input[name='flightSearchParam[3].originAirport']"): break 
     except: pass 
     time.sleep(1) 
    else: self.fail("time out") 

def tearDown(self): 
    self.selenium.stop() 
    self.assertEqual([], self.verificationErrors) 

if __name__ == "__main__": 
    unittest.main() 

बॉडी:

conn.request("POST", "/selenium-server/driver/", body, headers) 

u'cmd=isElementPresent&1=css%3Dinput%5Bname%3DflightSearchParam%5B2%5D.originAirport%5D&sessionId=02b3341a3fee46f5a1e6d9c13d6e8916' 

संपादित

मैं इसे sel.is_element_present("dom=document.getElementsByName('flightSearchParam[3].originAirport')[0]"):

को बदल सकते हैं और यह इस तत्व हैं। लेकिन, मुझे अभी भी पता नहीं है कि सीएसएस यहां क्यों काम नहीं करता है:/

+0

आप पोस्ट कर सकता अपने एचटीएमएल कोड जिसे आप – karlcow

+0

से मेल करना चाहते हैं, मुझे लगता है कि आप सीएसएस (XPath, शायद?) – rs79

उत्तर

0

बैकस्लाश के साथ ब्रैकेट से बचने का प्रयास करें।

+0

के अलावा किसी चयनकर्ता को नियोजित करना बेहतर होगा "css = input [name = 'flightSearchParam [3 /]। originAirport' /]" doesn काम नहीं, – user278618

+0

बैकस्लाश (\\), स्लैश अग्रेषित नहीं (/) ... – ThiefMaster

+0

क्षमा करें, मेरा मतलब है सेल।is_element_present (u "css = input [name = 'flightSearchParam [3 \]। originAirport' \]"): काम नहीं करता है। – user278618

2

यदि एचटीएमएल कोड

<input name="flightSearchParam[3].originAirport"> 

है तो फिर इसके लिए CSS चयनकर्ता हो जाएगा

css=input[name='flightSearchParam\[3\].originAirport'] 

आप ब्रैकेट जो CSS चयनकर्ताओं के लिए एक विशेष अर्थ है से बचने के लिए किया है।

0

ऐसा प्रतीत होता है कि आरसी भागने अनुक्रम का अनुवाद नहीं करता है। मैं XPath विशेषताओं का उपयोग करने की सलाह दूंगा। आपके मामले में यह हो सकता है -

sel.is_element_present("//input[@name='flightSearchParam[3].originAirport']") 
1

मैं एक ऐसी ही मुद्दा यह है कि आप अपनी समस्या के लिए एक समाधान की दिशा में कुछ जानकारी हासिल कर सकते हैं था:

:

फ़ायरफ़ॉक्स सेलेनियम आईडीई एक रिकॉर्डिंग के दौरान इस लक्ष्य को लौटे css=input[name="keywords"]

सही CSS चयनकर्ता तर्क इस तत्व प्राप्त करने के लिए निकला होना करने के लिए (सेलेनियम 2.41):

solution = driver.find_element_by_css_selector('input[name="keywords"]')

तो, आपके मामले में, यह काम हो सकता है:

css= 'input[name="flightSearchParam[3].originAirport"]' 
solution = driver.find_element_by_css_selector(css) 

नोट: अजगर सेलेनियम में, मैं कोष्ठक जो सूचकांक से संकेत मिलता है से बचने के लिए की जरूरत कभी नहीं किया है ...

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

  • कोई संबंधित समस्या नहीं^_^