场景描述:
我们要进行的操作是点击一级导航栏中的待点击元素,点击之后出现二级导航栏,然后再次点击二级导航栏中的元素,iframe框架页面就会做相应的跳转。但是实际结果是元素定位并且点击到了,iframe页面还停留在默认页面,没有进行相应的跳转。
代码示例
# 点击 一级导航栏元素
driver.find_element_by_xpath('//*[@id="root"]/div/header/div[2]/aside/div[1]/div[1]/section[2]/nav/a[2]').click()
# 点击二级导航栏元素
driver.find_element_by_xpath('//*[@id="root"]/div/header/div[2]/aside/div[2]/nav/button[3]/span[1]/span').click()
报错截图
错误原因
由于网页中的元素很多,加载页面需要时间,点击一级导航栏的时候,二级导航栏还没有出来,直接去点击二级导航栏中的元素,就会导致元素找不到,在浏览器里显示的就是一级导航栏元素被点击,但是页面却不显示。
解决办法
在点击元素之前加上等待 time.sleep(1)就可以了。
修改后代码
import time
# 点击 一级导航栏元素
time.sleep(1)
driver.find_element_by_xpath('//*[@id="root"]/div/header/div[2]/aside/div[1]/div[1]/section[2]/nav/a[2]').click()
# 点击二级导航栏元素
time.sleep(3)
driver.find_element_by_xpath('//*[@id="root"]/div/header/div[2]/aside/div[2]/nav/button[3]/span[1]/span').click()