2015-09-14 15 views
6


पायथन के साथ सेलेनियम वेबड्राइवर में, मैं एक अजाक्स अनुरोध पूरा करने के लिए प्रतीक्षा करना चाहता हूं (jquery लाइब्रेरी)। मैं सेलेनियम के wait.until() फ़ंक्शन का उपयोग करता हूं। SubmitJquery बटन पर क्लिक करने के बाद अजाक्स अनुरोध शुरू होता है।सेलेनियम प्रतीक्षा करें। AJAX अनुरोध को समाप्त करने के लिए इंतजार करना है

wait.until(self.driver.execute_script("return jQuery.active == 0")) 

लेकिन मैं त्रुटि निम्न है:

E 
====================================================================== 
ERROR: test_MahsumAkbasNet_Pass (__main__.TestClass) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "D:\xxx\src\unittestpackage\JavaScriptExec.py", line 24, in test_MahsumAkbasNet_Pass 
    wait.until(self.driver.execute_script("return jQuery.active == 0")) 
    File "C:\Python27\lib\site-packages\selenium\webdriver\support\wait.py", line 66, in until 
    value = method(self._driver) 
TypeError: 'bool' object is not callable 

---------------------------------------------------------------------- 
Ran 1 test in 14.449s 

FAILED (errors=1) 

पूरा कोड है:

# -*- coding: UTF-8 -*- 
import unittest 
import time 
import datetime 
from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

class TestClass(unittest.TestCase): 

    def setUp(self): 
     self.driver = webdriver.Firefox() 
     self.driver.set_page_load_timeout(30) 
     self.driver.maximize_window() 

    def test_MahsumAkbasNet_Pass(self): 
     wait = WebDriverWait(self.driver, 30) 

     self.driver.get("http://www.mahsumakbas.net/selenium") 

     self.driver.find_element_by_id("submitJquery").click()  

     wait.until(self.driver.execute_script("return jQuery.active == 0")) 

     print "Jquery is completed" 

    def tearDown(self): 
     self.driver.close() 

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

अग्रिम धन्यवाद।

उत्तर

8

उत्तीर्ण होने के लिए जरूरत है एक प्रतिदेयwait.until() रहे हैं:

wait.until(lambda driver: driver.execute_script("return jQuery.active == 0")) 
+1

अगर आप 'हो रही है ReferenceError: jQuery defined' नहीं है कि हो सकता है क्योंकि jQuery, जबकि आप इस लाइन को चलाने के लोड नहीं है। – Indra

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

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