当页面使用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 python:如何在头部/标题加载时停止页面加载?
- 2. 当预期的元素存在时,Selenium立即停止页面加载
- 3. 仅在某些页面上停止加载脚本
- 4. 防止Python在加载脚本的某些部分时加载
- 5. 仅当某些页面元素已加载时测量
- 6. Selenium webdriver - 如何点击X按钮停止页面加载?
- 7. 基于IP地址加载某些页面元素
- 8. AJAX调用停止页面加载其他元素
- 9. 如何在特定页面上阻止加载php元素
- 10. 如何在点击asp:listview中的linkbutton时停止页面加载
- 11. 如何在导航返回时停止加载页面?
- 12. 加载XML不会对某些元素
- 13. Selenium等待页面加载python
- 14. Material CSS - 在页面加载后停止预加载器
- 15. PHP到Python服务器页面,退出,停止页面加载
- 16. 如何强制某些元素在网页上完全加载时才显示?
- 17. 页面加载后添加jQueryMobile元素
- 18. Selenium/Protractor在当前加载的页面中查找元素吗?
- 19. Selenium 2.0是否在等待元素/页面加载?
- 20. Angular 2:在加载页面时跳转到页面的某个元素
- 21. 使用javascript停止页面加载
- 22. ASP.NET页面永不停止加载
- 23. jquery - 停止页面重新加载
- 24. 停止页面重新加载
- 25. 防止页面加载页面中的元素刷新ASP?
- 26. Selenium中的页面加载超时
- 27. 游标在元素上(页面加载)?
- 28. 如何在页面加载时点击按钮元素
- 29. 如何以编程方式停止在Firefox中加载页面?
- 30. Phantomjs停止加载整页
现在你为什么会做这样的事情,让我们说你等待一个按钮来显示。一旦按钮显示你做任何你想做的事情,它不会等待页面在它执行你的命令之前完全加载,除非你有这样的一个替代原因,这是没用的。 –
@ElvirMuslic但是,只有当页面完成加载后,才会调用driver.get()。这就像我想以编程方式点击该按钮,一旦按钮可见不等待整个页面加载。 – RamKumar
并非如此,driver.get()只是使请求不会等待元素加载。如果你说driver.something.click(),它会在它获得关于该页面的任何响应后立即执行它,如果该元素不存在,则会引发错误。 含义,1.driver.get()等待来自页面的任何响应(不是全部)。 2.您可以执行任何您想要的内容,并且该页面不必完全加载,但会在执行这些操作时加载。 3.这可以用来节省时间和使用我想以某种方式(对于大型项目) –