當頁面使用AJAX時,可以使用隱式和顯式等待,但是當加載足夠的元素時,我想停止由driver.get()引起的加載。是否有可能這樣做,因爲driver.get()調用僅在頁面加載完成時才返回。Selenium python:如何在某些元素加載時停止頁面加載?
回答
是的,可以將pageLoadStrategy
的能力設置爲none
。然後等待一個元素存在,並呼籲停止加載:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
capa = DesiredCapabilities.CHROME
capa["pageLoadStrategy"] = "none"
driver = webdriver.Chrome(desired_capabilities=capa)
wait = WebDriverWait(driver, 20)
driver.get('http://stackoverflow.com/')
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '#h-top-questions')))
driver.execute_script("window.stop();")
如果我想在本地執行此代碼,我需要在本地執行什麼操作?我理解依賴關係的要求,但是我需要在上述測試中指向一個chromedriver嗎?你如何在沒有語言綁定的情況下執行上述操作? – Wunderbread
@Wunderbread,我不確定「沒有語言綁定」是什麼意思,但是要在本地執行代碼,可以將chromedriver放在'PATH'環境變量中,或者將路徑提供給構造函數('webdriver.Chrome ')。 –
明白了,謝謝。我的意思是在沒有框架的情況下執行上述測試。命令「pytest test_foo.py」 – Wunderbread
- 1. Selenium:停止頁面加載
- 2. 停止頁面加載Python/Selenium/PhantomJS
- 3. Selenium python:如何在頭部/標題加載時停止頁面加載?
- 4. 使Selenium Webdriver停止加載頁面,如果所需的元素已被加載?
- 5. 當預期的元素存在時,Selenium立即停止頁面加載
- 6. 頁面加載時啓動動畫,加載頁面時停止
- 7. 僅在某些頁面上停止加載腳本
- 8. 防止Python在加載腳本的某些部分時加載
- 9. 僅當某些頁面元素已加載時測量
- 10. 頁面不停止加載
- 11. 爲某些瀏覽器停止頁面加載
- 12. 如何停止頁面加載於F5
- 13. Selenium webdriver - 如何點擊X按鈕停止頁面加載?
- 14. 在頁面加載時在模態框中加載某些頁面
- 15. 如何在使用jquery加載網頁時停止加載?
- 16. 加載頁面時停止div顯示
- 17. 從頁面加載時停止表單
- 18. 頁面加載時不加載某些圖片
- 19. 基於IP地址加載某些頁面元素
- 20. 讓JQuery在頁面加載時加載元素
- 21. AJAX調用停止頁面加載其他元素
- 22. 如何在特定頁面上阻止加載php元素
- 23. 如何在導航返回時停止加載頁面?
- 24. 如何在點擊asp:listview中的linkbutton時停止頁面加載
- 25. Selenium WebDriver加載某些頁面非常緩慢
- 26. 加載XML不會對某些元素
- 27. Selenium等待頁面加載python
- 28. Opera在jquery加載後停止加載我的頁面
- 29. Material CSS - 在頁面加載後停止預加載器
- 30. PHP到Python服務器頁面,退出,停止頁面加載
現在你爲什麼會做這樣的事情,讓我們說你等待一個按鈕來顯示。一旦按鈕顯示你做任何你想做的事情,它不會等待頁面在它執行你的命令之前完全加載,除非你有這樣的一個替代原因,這是沒用的。 –
@ElvirMuslic但是,只有當頁面完成加載後,纔會調用driver.get()。這就像我想以編程方式點擊該按鈕,一旦按鈕可見不等待整個頁面加載。 – RamKumar
並非如此,driver.get()只是使請求不會等待元素加載。如果你說driver.something.click(),它會在它獲得關於該頁面的任何響應後立即執行它,如果該元素不存在,則會引發錯誤。 含義,1.driver.get()等待來自頁面的任何響應(不是全部)。 2.您可以執行任何您想要的內容,並且該頁面不必完全加載,但會在執行這些操作時加載。 3.這可以用來節省時間和使用我想以某種方式(對於大型項目) –