等待页面重定向Selenium WebDriver(Python)

等待页面重定向Selenium WebDriver(Python),python,selenium,selenium-webdriver,webdriver,Python,Selenium,Selenium Webdriver,Webdriver,我有一个页面,它使用ajax加载动态内容,然后在一定时间后重定向(不是固定的)。如何强制Selenium Webdriver等待页面重定向,然后立即转到其他链接 import time from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.chrome.options import Options from selenium.webdriver.

我有一个页面,它使用ajax加载动态内容,然后在一定时间后重定向(不是固定的)。如何强制Selenium Webdriver等待页面重定向,然后立即转到其他链接

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Chrome();
driver.get("http://www.website.com/wait.php") 
您可以创建自定义URL以进行更改:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

wait = WebDriverWait(driver, 10)
wait.until(lambda driver: driver.current_url != "http://www.website.com/wait.php")
预期的条件基本上是可调用的-在实现内置条件时,您可以覆盖
\uuu call\uuu()
魔术方法。

最好“等待”出现unique(for new page)元素

您可以使用模块

例如,您可以在登录时等待用户徽标:

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

driver = webdriver.Firefox()
driver.get('http://yourapp.url')

timeout = 5

    try:
        logo_present = EC.presence_of_element_located((By.ID, 'logo_id'))
        WebDriverWait(driver, timeout).until(logo_present)
    except TimeoutException:
        print "Timed out waiting for page to load"
有几种方法可与一起用于处理页面重定向:

from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
  • 等待具有以下内容的新页面标题:

  • 等待当前URL更改为具有以下内容的任何其他URL:

  • 等待使用以下内容导航到准确的URL:


  • 可以用于等待包含指定子字符串的URL,或者-等待通过正则表达式模式匹配的URL,或者-等待包含指定子字符串的新标题,如果您知道可以使用
    驱动程序的预期URL。当前URL
    while
    循环中。您可以与服务员一起等待URL更改。我不是确定第二个重定向url的位置。你能给我一个例子,说明如何用提供的条件将其封装在类中吗?@7O07Y7在这种预期条件下,我们只是在等待当前url的更改。如果要将其更改为等待特定url成为当前url,可以使用
    lambda driver:driver.current\u url==“specific url”
    。。
    wait.until(EC.title_is('New page Title'))
    
    wait.until(EC.url_changes('https://current_page.com'))
    
    wait.until(EC.url_to_be('https://new_page.com'))