python - 预期条件 WebDriverWait Python Selenium 问题
问题描述
所以我正在填充一个元素列表,然后我遍历列表中的每个元素。如何实现等待条件来告诉代码在找不到元素之前等待 15 秒?具体来说,我希望currentprice和title尝试等待直到元素可见,而不是在遇到该代码行时硬执行。
elements = driver.find_elements_by_css_selector('div.list-wrap div.item-container')
print(len(elements))
for x in range(len(elements)):
WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR,'div.list-wrap div.item-container')))
elements = driver.find_elements_by_css_selector('div.list-wrap div.item-container')
currentprice = elements[x].find_element_by_css_selector('li.price-current').text
title = elements[x].find_element_by_css_selector('a.item-title').text
...
我尝试了以下方法,但我收到 WebDriverWait 不是元素方法的错误。
elements[x].WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR,'li.price-current')))
解决方案
你很亲密。WebDriverWait
期望驱动程序实例作为第一个参数。该WebElement
对象在其实例中具有驱动程序对象,并且还实现了大多数 WebDriver 方法。
考虑到这一点,您可以创建一个新WebDriverWait
元素并传递您的元素而不是驱动程序。
代替:
elements[x].WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR,'li.price-current')))
利用:
WebDriverWait(elements[x], 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR,'li.price-current')))
推荐阅读
- vue.js - VueJS 动态图标类
- r - R:当未给出第一个或最后一个值时,按索引/组对 NA 的值进行插值
- android - 从服务内部检测系统重启
- sbt - SBT 基本身份验证问题
- javascript - 在 html5canvas 中对 javascript 中的内核矩阵进行卷积以进行图像过滤
- python - 如何使用 Kivy 的 FileChooser 选择多个文件?
- javascript - 内部控制的angularjs指令必需属性
- c++ - 我可以以任何方式定义数组元素的颜色吗?
- powershell - 从实际变量中获取 powershell 变量名
- python - 机器学习奖励人为封顶