2017-01-07 32 views
0

我有一個情況,沒有答案,我有一個登錄頁面,我試圖點擊提交按鈕,但不知何故,當它點擊在提交按鈕,它不導航到主頁。多少次提交按鈕會得到點擊與默認等待30秒

所以我的問題是考慮我有30秒的隱含等待它會點擊提交按鈕多少次?它會繼續點擊直到30秒,然後拋出一個異常?

+0

你的代碼告訴它多少次點擊?沒有代碼顯示很難說。 – JeffC

+0

它會是這樣的impicit等待設置= 30秒,然後submit.click()。因此只執行一次點擊操作。那麼如果點擊不起作用,那麼它會按照隱式等待的定義嘗試保持點擊30秒? –

+0

它只會點擊一次...但只有在被點擊的元素存在之後。隱式等待只是重試定位元素,直到找到或超時爲止。 – JeffC

回答

1

的隱等待不會點擊元素多次 - 換句話說,它不適用於行動,它適用於只有「發現」功能:

隱含的等待是要告訴的webdriver在嘗試查找一個或多個元素(如果它們不是立即可用)時輪詢DOM一段時間。

什麼你可能尋找的是Explicit Wait - 例如,等待按鈕變爲可點擊。 Python中的示例:

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 

driver = webdriver.Firefox() 
driver.get("http://somedomain/url_that_delays_loading") 

wait = WebDriverWait(driver, 10) 
button = wait.until(
    EC.element_to_be_clickable((By.ID, "myDynamicElement")) 
) 
button.click() 
1

隱式等待功能與您所期望的不同。它只會定期檢查元素,這稱爲輪詢。如果元素本身第一次被發現,那麼它將自動停止輪詢。這意味着它會檢查元素,直到通過輪詢發現您的元素的時間跨度爲30秒。

如果要多次擊中元素,可以使用顯式等待,如流利等待。

如果您想在點擊提交後等待導航到主頁,請使用網頁驅動程序等待,您的代碼將平穩運行。

 WebDriverWait wait = new WebDriverWait(big,120); 
      wait.until(ExpectedConditions.elementToBeClickable(By.xpath("your xpath here"));