python - Python Selenium - 如何动态单击“加载更多”直到它消失?
问题描述
我正在浏览一个站点,该站点有一个加载更多按钮,我需要单击该按钮,直到它不再出现在站点上,我编写了以下代码,但不确定是否有比 WHILE 循环更好的处理方式. 是否有其他硒方法来处理这个问题?
driver.get(url)
while driver.find_element_by_xpath("//xpath").is_displayed():
try:
loadmore = driver.find_element_by_xpath("//xpath")
loadmore.click()
except Exception as e:
break
这行得通,但我得到'NoneType'对象在完成所有点击后没有属性'is_displayed',我写了另一个代码
while True:
try:
loadmore = driver.find_element_by_xpath("//xpath")
loadmore.click()
except Exception as e:
break
由于我不使用 is_displayed 方法,因此捕获了异常,因此可以正常工作。
解决方案
您可以将等待与 一起使用expected_conditions
,即:
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
driver = webdriver.Chrome()
driver.get('theurl')
wait = WebDriverWait(driver, 10) # increase the timeout as needed
el = wait.until(ec.visibility_of_element_located((By.XPATH, "//xpath")))
el.click()
推荐阅读
- serverless - 如何使用 zappa python 保持 lambda 温暖
- reactjs - NextJS 和 Redux-thunk:出现“错误:“getInitialProps”中的循环结构”
- python - 连接列表中的多个范围
- asp.net - 在 ASP.Net 项目中添加回未加载的文件夹
- php - 为什么 Post 方法在 Laravel 中给出错误 MethodNotAllowedHttpException
- reactjs - 我想在 Material-Table 渲染后将文本保留在文件管理器部分
- ios - 在 App Assets 中本地存储 UIImagePickerController 图像
- java - 如何在 Spring Boot 应用程序中构造“lib”?
- java - 如何取消选择一个单选按钮,而不是将其与另一个单选按钮放在一个 toggleGroup 中
- python - 没有迭代的两个数据帧的交集