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