Selenium踩过的那些坑---句柄获取不到的问题

记录自己在学习Selenium中踩的坑

Python中,current_window_handleseleniumwebdriver获取当前句柄的方法,window_handles 是获取所有句柄,返回值为列表。但是奇怪的问题出现了,我本想打开三个四页面相互切换,但是当我获取了所有句柄后用索引来跳转页面的时候,发现总是不成功,然后将句柄列表打印出来,发现也是不正确的

from selenium import webdriver
from time import sleep

driver = webdriver.Firefox()

driver.get('https://www.51zxw.net/list.aspx?cid=615')
driver.maximize_window()
sleep(2)

# 获取课程主页的窗口句柄
selenium_index1 = driver.current_window_handle
print(selenium_index1)

driver.find_element_by_partial_link_text('2-1').click()

# 获取句柄列表
selenium_index2 = driver.window_handles
print(selenium_index2)

结果却是

18
['18']

按理来说句柄列表不是应该有两个值吗????????
原来是因为在我们刚刚执行 .click() 命令后立刻就执行了 driver.window_handles,python在迅雷不及掩耳之势的情况下获取了一个句柄放在句柄列表里… 找到问题就好解决了,

driver.find_element_by_partial_link_text('2-1').click()
sleep(1)		# 一秒就足以让页面加载出句柄信息,并获取到

结果—完美解决

18
['18', '6442450954']

注:添加隐式等待不可行,显示等待可以自行尝试。。。

你可能感兴趣的:(selenium,selenium,句柄)