使用Selenium等待jQuery弹出窗口加载

使用Selenium等待jQuery弹出窗口加载,jquery,python,selenium,Jquery,Python,Selenium,好的,我需要一个Python web驱动程序脚本来等待jQuery弹出窗口加载。我试过几次教程,但都不适合我 我有: driver.find_element_by_id("xxx").click() //现在等待弹出窗口 我尝试了等待。直到: self.wait = WebDriverWait(self.driver, 20) wait = self.wait wait.until(EC.presence_of_element_located((By.ID, "myDynamicElement

好的,我需要一个Python web驱动程序脚本来等待jQuery弹出窗口加载。我试过几次教程,但都不适合我

我有:

driver.find_element_by_id("xxx").click()
//现在等待弹出窗口 我尝试了
等待。直到

self.wait = WebDriverWait(self.driver, 20)
wait = self.wait
wait.until(EC.presence_of_element_located((By.ID, "myDynamicElement"))
但它不起作用。我总是有一个暂停时间

有什么建议吗?

基于
WebDriverWait
\uuuuu init\uuuuu
方法的第二个参数是以秒为单位的超时

目前,等待时间超过了20秒,并且遇到了超时问题。如果您设置了更长的超时时间,例如一个小时,那么应该可以消除超时问题

self.wait = WebDriverWait(self.driver, 3600)

这不是优化代码,但您可以尝试以下操作:

def wait_popup ():
    i=0
    while i!=1
        try:
            alert = browser.switch_to_alert()#switch to popup
            alert.accept()
            i=1
        except:
            i=0 
            time.sleep(1) 

请尝试其他选择器或使用更长的异常。Selenium在给定的20秒内没有找到元素id=“myID”。

您发布的代码等待id为
myDynamicElement
的元素(例如,
将匹配,但
将不匹配)。是的,我知道。但它无论如何都不起作用。你在等待什么元素?你怎么知道它在那儿?在浏览器中使用“检查元素”时,您会看到什么?当你的问题更具体的时候,帮助你就容易多了。当你只是说“它不起作用”时,这还不够具体,我们无法理解发生了什么。@nvldk,你还收到超时或其他错误吗?没有错误,没有超时。等待着。但该元素已加载。@nvldk,这意味着您在等待错误的内容。如果您需要更具体的帮助,请发布足够的代码来完全重现问题,包括您正在等待的页面和任何其他需要重现的内容,但仅此而已。您是对的。我在等一件错事。当我定位到iframe中时,问题就解决了。