Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
硒';s等待总是需要超时?(Python)_Python_Selenium - Fatal编程技术网

硒';s等待总是需要超时?(Python)

硒';s等待总是需要超时?(Python),python,selenium,Python,Selenium,在selenium中,我们可以看到必须为等待设置一些超时。 例如:来自该文档的代码 wait = WebDriverWait(driver, 10) element = wait.until(EC.element_to_be_clickable((By.ID,'someid'))) 我想知道我们是否总是必须设置一些超时?或者有一种方法会等到所有AJAX代码下载完毕,然后我们的驱动程序才会与某些web元素交互(我的意思是没有固定的超时时间,它只是加载所有东西,并且只有在开始交互之后)?希望这段代

在selenium中,我们可以看到必须为等待设置一些超时。 例如:来自该文档的代码

wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.ID,'someid')))

我想知道我们是否总是必须设置一些超时?或者有一种方法会等到所有AJAX代码下载完毕,然后我们的驱动程序才会与某些web元素交互(我的意思是没有固定的超时时间,它只是加载所有东西,并且只有在开始交互之后)?

希望这段代码能帮助您。我就是这样解决这个问题的

 #Check with jQuery if it has any outstanding ajax
    def ajax_complete(self):
        try:
            return 0 == self.execute_script("return jQuery.active")
        except:
            pass
    #Create a method to wait for ajax to complete
    driver.wait_for_ajax = lambda: WebDriverWait(driver, 10).until(ajax_complete, "")
    driver.implicitly_wait(30)

你是说像个聆听者?知道ajax响应何时到达吗?@drkthng是的,类似这样的脚本看起来很有趣,但是我们仍然有一些严格的超时(
lambda:WebDriverWait(driver,10)
)和
driver。隐式地等待(30)
。但是我们能在没有这些“10”、“30”的情况下编写代码吗等等?从理论上讲,你可以将这个值设置得很高,并且有一个很长的超时时间,你永远不会命中。是的,这很明显),但是也许有人知道另一种方法(如果确实存在的话),我还没有这样做。我更喜欢暂停。你检查过这些吗?对不起,我没有更多的帮助