繁体   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