簡體   English   中英

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

[英]Wait for page redirect Selenium WebDriver (Python)

我有一個頁面用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")

預期條件基本上是可調用的 - 您可以將其包裝到一個類中 ,以便在實現內置條件時覆蓋__call__()魔術方法。

“等待”顯示唯一(用於新頁面)元素是一種很好的做法。

您可以使用模塊expected_conditions

例如,您可以在登錄時等待用戶徽標:

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"

有幾個ExpectedConditions可以與ExplicitWait一起使用來處理頁面重定向:

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)
  1. 等待title_is(title_name)新頁面標題:

     wait.until(EC.title_is('New page Title')) 
  2. 等待使用url_changes(exact_url)將當前URL更改為任何其他URL:

     wait.until(EC.url_changes('https://current_page.com')) 
  3. 等待使用url_to_be(exact_url)導航到確切的URL:

     wait.until(EC.url_to_be('https://new_page.com')) 

url_contains(partial_url)可用於等待包含指定子字符串或url_matches(pattern)的URL - 等待通過傳遞的正則表達式模式或title_contains(substring)匹配的URL - 等待包含指定子字符串的新標題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM