我需要一步一步建立一个查找和点击程序,但我无法做到。
我的开始代码是:
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内容?
谢谢
答案 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
- 执行一次。