2013-02-13 11 views
12

मैं सेलेनियम आईडीई के साथ अपने बैकबोन.जेएस वेब एप्लिकेशन का परीक्षण करने की कोशिश कर रहा हूं।सेलेनियम का उपयोग कर हैश के साथ एक यूआरएल कैसे खोलें?

सेलेनियम मेरे टेस्ट केस के प्रारंभिक यूआरएल को तब तक खोल सकता है जब तक कि यह एक नई ब्राउज़र विंडो में है - उदा। open /#/login - लेकिन जब भी यह बाद के यूआरएल खोलने की कोशिश करता है तो यह समय समाप्त हो जाता है।

ऐसा लगता है कि सेलेनियम एक ऐसी घटना के लिए सुन रहा है जो केवल यूआरएल हैश बदलता है जब ट्रिगर नहीं होता है।

मैं कल्पना होगा यह किसी भी समय आप hashchange + सेलेनियम का उपयोग कर रहे होता है ...

+2

मैं इस सबमिट कर दी है [एक बग के रूप में] (http://code.google.com/p/selenium/issues/detail?id=5165&q = एंकर और colspec = आईडी% 20 स्टार्स% 20 टाइप% 20 स्टेटस% 20 प्राथमिकता% 20 मिलीस्टोन% 20 ऑनर% 20 सारांश) सेलेनियम टीम के लिए। – jabbett

+0

मैं वही व्यवहार देख रहा हूं, लेकिन टाइमआउट त्रुटि के बावजूद, मेरी स्क्रिप्ट तब जारी रहेगी –

+0

किसी अन्य व्यक्ति को नोट के रूप में जो मेरे समान लेकिन अलग-अलग मामले का अनुभव कर रहा है, मैं सेलेनियम में एक यूआरएल लोड नहीं कर सकता जैसे कि https: // foo.com # bar'। हालांकि, सेलेनियम ** ** हैश को बाद में स्लैश के बाद यूआरएल हैश स्वीकार करेगा, यानी 'https: // foo.com #/bar'। –

उत्तर

-1

एक संक्षिप्त अद्यतन: हम छोड़ दिया हमारे एकीकरण परीक्षणों लिखने के लिए सेलेनियम आईडीई का उपयोग करने की कोशिश कर रहा है और इसकी जगह सेलेनियम के लिए इस्तेमाल किया Selenium Python bindings WebDriver।

इस दृष्टिकोण के साथ, हम एक यूआरएल पर नेविगेट कर सकते हैं और फिर डीओएम में एक विशेष परिवर्तन का पता लगाने के लिए WebDriverWait का उपयोग कर सकते हैं।

driver = webdriver.Firefox() 
driver.get("/#/login") 
WebDriverWait(driver, 10).until(
    lambda driver: driver.find_element_by_css_selector("form.login").is_displayed()) 
5

सेलेनियम आईडीई में बस उदाहरण के लिए, 'storeEval' आदेश का उपयोग करें:

Command = storeEval 
Target = window.location.hash='/search/events/birthdays/1' 

storeEval चलाता जावास्क्रिप्ट 'लक्ष्य' करने के लिए सौंपा स्निपेट। तब आप क्या कर सकते हैं, इसमें एक टेस्ट केस है जो ओपन (यूआरएल) कमांड का उपयोग करके स्टार्ट पेज खोलता है, और बाकी के केस storeEval कमांड का उपयोग करके हैश बदलते हैं।

1

डेवलपर टूल के कंसोल पर इसे चलाएं ->window.location.hash='#abcde'। इसे ब्राउज़र टैब में आपके लिए हैश बदलना चाहिए।

सेलेनियम Webdriver और जावा के माध्यम से javascript निष्पादित करें:

((JavascriptExecutor) driver).executeScript("window.location.hash='#abcde'"); 
संबंधित मुद्दे