Python+selenium定位不到元素的问题及解决方案

在操作过程中主要遇到两种阻塞的问题,总结如下:

1、页面中有iframe,定位元素时,需要用switch_to.frame()转换到元素所在的frame上再去定位

2、遇到一种新情况,有些按钮在html上没有被赋予herf链接,而是由javascript控制跳转到新的页面,这种情况下点击按钮之后浏览器上打开一个新页面,但是浏览器的句柄handle仍然会停留在原页面(浏览器显示的句柄在新页面,所以不容易发现这个问题),而不是新弹出的页面上,所以要定位新页面的元素,必须先将句柄转移到新弹出的页面上,再去进行定位,用到如下语句:

#获得浏览器上所有窗口

handles = driver.window_handles

#转换到最新弹出的窗口

driver.switch_to.window(driver.window_handles[len(handles)-1])

跳转需要时间的话,加上time.sleep(2),再试就能定位成功了