[英]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.