无法使用"显式等待"以正确的方式

时间:2018-03-21 09:59:39

标签: python python-3.x selenium selenium-webdriver web-scraping

我已经使用python和selenium编写了一个脚本来点击谷歌地图侧边栏中列出的一些链接。单击任何项​​目时,附加到每个引线的相关信息将显示在右侧区域中。脚本运行正常。但是,我使用了硬编码延迟来完成这项工作。如何通过explicit wait实现相同的延迟来消除硬编码延迟。提前谢谢。

链接到网站:website

我尝试的脚本:

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

link = "replace_with_above_link"

driver = webdriver.Chrome()
driver.get(link)
wait = WebDriverWait(driver, 10)

for item in wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "[id^='rlimg0_']"))):
    item.location
    time.sleep(3)  #wish to try with explicit wait but can't find any idea
    item.click()

driver.quit()

我尝试使用wait.until(EC.staleness_of(item))而不是硬编码延迟,但没有运气。

1 个答案:

答案 0 :(得分:2)

如果您想等到每个clcik后显示新数据,您可以尝试下面的步骤:

for item in wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "[id^='rlimg0_']"))):
    div = driver.find_element_by_xpath("//div[@class='xpdopen']")
    item.location
    item.click()
    wait.until(EC.staleness_of(div))