Python中的Selenium:单击后查找元素

时间:2017-01-02 17:16:01

标签: python selenium

我需要一步一步建立一个查找和点击程序,但我无法做到。

我的开始代码是:

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内容?

谢谢

1 个答案:

答案 0 :(得分:0)

您应该等待第二页加载(假设它由confirm.click()加载)。有多种方法可以做到这一点。其中一个是等待URL更改检查driver.current_url中的wait.until()值:

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

您还可以等待第一个"staleness""确认"元素:

  

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

wait.until(EC.staleness_of(confirm))

请注意,在定义WebDriverWait()实例后,无需多次重新实例化driver - 执行一次。