簡體   English   中英

Python中的Selenium:單擊后查找元素

[英]Selenium in Python: find element after a click

我需要逐步構建一個查找和單擊過程,但我無法做到。

我的開始代碼是:

from selenium import webdriver
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.implicitly_wait(2)#seconds 
driver.get('http://mywebpage.com/page')
# The browser open page1

wait = WebDriverWait(driver, 2)
confirm = wait.until(EC.element_to_be_clickable((By.XPATH, "(//a[@class='button_serv'])[4]")))
confirm.click()
# The browser open page2 in the same window

現在我想在page2中找​​到一個元素,但驅動程序始終指向page1(因為我的代碼錯誤):

wait = WebDriverWait(driver, 2)
confirm = wait.until(EC.element_to_be_clickable((By.XPATH, "(//a[@class='button_serv'])[9]")))
confirm.click()

如何告訴selenium等待和搜索page2的fon內容?

謝謝

您應該等待第二頁加載(假設它由confirm.click()加載)。 有多種方法可以做到這一點。 其中一個是等待URL更改檢查wait.until()driver.current_url值:

wait.until(lambda driver: driver.current_url != "http://mywebpage.com/page")

您還可以等待第一個“confirm”元素的“陳舊性”

等到元素不再附加到DOM。 element是要等待的元素。 如果元素仍附加到DOM,則返回False,否則返回true。

wait.until(EC.staleness_of(confirm))

請注意,在定義driver實例后,無需多次重新實例化WebDriverWait() - 執行一次。

暫無
暫無

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

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