2016-07-30 83 views
1

當硒運行, 可以關閉和檢測窗口警報, 如果apear窗口警報? 我需要它,因爲窗口在web中隨機提示apear。
這是僞代碼當硒運行時,硒能夠關閉並檢測到窗口警報,如果窗口有警報?

try:  
    if window alert is apear: 
     context.driver.switch_to.alert().dismiss() 
except NoAlertPresentException: 
    print('no alert') 
+0

此警報是否針對特定場景或任何隨機動作發生一次? –

+0

是啊隨機apear –

+0

好吧,那麼你需要通過使用JavaScript阻止提醒...嘗試提供的答案.. :) –

回答

1

正如您所說的警報隨機發生並且您無法知道它何時發生,那麼您應該使用execute_script()在每次頁面更改或刷新時禁用警報發生,這意味着當頁面需要執行一次JavaScript時已更改爲禁用警報:

driver.execute_script("window.alert = function() { return true; }") 

此Java腳本會覆蓋alert的功能,因此每次頁面加載時都需要執行一次。當它執行警告框時將永遠不會發生,直到頁面刷新。

希望它有幫助... :)

+0

。如果解僱()。什麼是變化? –

+0

@오은아은아然後返回false ... –

+0

啊,我會嘗試它 –

1

能否請您試試這個:

from selenium import webdriver 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.common.exceptions import TimeoutException 

browser = webdriver.Firefox() //or Chrome("path to chromedriver.exe") 
browser.get("url") 
browser.find_the_element_by_id("someID") 

try: 
    WebDriverWait(browser, 10).until(EC.alert_is_present(), 
            'Timed out') 

    alert = browser.switch_to_alert() 
    alert.accept() 
except TimeoutException: 
    print "There is no alert window." 

您可以修改10到任何時間延遲你的願望。

+1

如果警報隨機發生一個任何行動,那麼它是如何處理它的代碼?正如OP所說...正如我所看到的,它只是處理如果警報發生後的URL發生了什麼?如果警報發生後,任何行動? –

+0

@SaurabhGaur,好點,謝謝。我需要在我的答案中提出更多想法。如果accept()不是,則返回 –