2016-05-02 10 views
1

無法關閉彈出窗口,此窗口在http://www.cargo.lt/加載後立即出現。下面是我得到了什麼:如何關閉Selenium中的彈出窗口

from selenium import webdriver 
import time 

driver = webdriver.Firefox() 
driver.get('http://www.cargo.lt/asp/index.asp?') 
time.sleep(10) 
driver.find_element_by_xpath('/html/body/div[36]/div/a').click() 

我不是很熟悉如何編寫自定義的XPath/CSS的路徑,現在剛剛點擊檢查元素和複製的XPath。我做錯了什麼?

編輯: 多麼愚蠢的錯誤。沒有意識到,當元素在屏幕外Selenium不能點擊它。剛剛添加了driver.maximize_window(),我的所有問題都消失了。謝謝你的回答。不幸的是我不能投票,但因爲我沒有足夠的積分...

回答

0

喜關閉彈出/警報,請使用

driver.switch_to_alert() 

然後用

driver.find_element_by_xpath('/html/body/div[36]/div/a').click() 

//如果u有複製粘貼的形式螢火那麼這將是正確的我猜

或者如果烏拉圭回合的XPath是不正確的,然後使用

driver.find_element_by_xpath("//a[@id='advert_x']").click() 
0

您可以使用python -Selenium中的預定義命令切換到警報框。

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get('http://www.cargo.lt/asp/index.asp?') 
alrt = driver.switch_to_alert() 
alrt.accept() 

希望它有助於。

1

我想你的代碼,它的做工精細,我不知道什麼是你的問題,但 試試這個:driver.implicitly_wait(10) insted的的:

time.sleep(10) 
+0

隱等待是非常慢的,應該不惜一切代價避免。當你添加一個隱含的等待時,你基本上會說:「在執行每個動作之前等待X秒的時間」。 如果您需要加載頁面並且速度不夠快,您應該在加載頁面後在頁面上找到一個元素。然後你可以使用WebDriverWait來等待這個元素出現,從而加載頁面。如果不是使用time.sleep(),如果是一次等待。 – RemcoW