擅长:python、mysql、java
<p>默认情况下,<code>webdriver</code>将通过<code>.get()</code>方法等待加载页面。</p>
<p>正如@user227215所说,您可能正在寻找某些特定元素,因此应该使用<code>WebDriverWait</code>来等待位于页面中的元素:</p>
<pre><code>from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
browser = webdriver.Firefox()
browser.get("url")
delay = 3 # seconds
try:
myElem = WebDriverWait(browser, delay).until(EC.presence_of_element_located((By.ID, 'IdOfMyElement')))
print "Page is ready!"
except TimeoutException:
print "Loading took too much time!"
</code></pre>
<p>我用它来检查警报。您可以使用任何其他类型方法来查找定位器。</p>
<p><strong>编辑1:</strong></p>
<p>我应该提到,<code>webdriver</code>将在默认情况下等待页面加载。它不会等待帧内加载或ajax请求。这意味着当您使用<code>.get('url')</code>时,浏览器将等待页面完全加载,然后转到代码中的下一个命令。但是,当您发布ajax请求时,<code>webdriver</code>不会等待,您有责任等待适当的时间来加载页面或页面的一部分;因此有一个名为<code>expected_conditions</code>的模块。</p>