我试图使用selenium webdriver与Python登录到一个网站。但在这个网站上,一旦我按下登录按钮,在网站弹出显示,我必须点击弹出按钮。这个网站做得不是很好,每次弹出窗口出现在网站上的时间都不一样,有时需要几秒钟,有时需要15-20分钟。我想知道是否有一种方法可以让Python等待,直到它检测到弹出窗口或我需要在屏幕上按下的按钮,然后继续执行函数并单击按钮。
在这种情况下可以而且应该使用显式等待。
例如,如果关闭弹出窗口的按钮可以通过button.close-pop-up
选择器找到,则可以使用以下命令:
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "button.close-pop-up"))).click()
要使用它,你需要导入
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
并通过
初始化wait
对象wait = WebDriverWait(driver, 20)
有关示例代码,请参阅此讨论或任何其他使用"预期条件">
的selenium代码