场景:百度搜索qq邮箱->跳转到qq邮箱登录页->输入登录帐号
1.提示:
selenium.common.exceptions.NoSuchFrameException: Message: no such frame
思考1:是不是iframe定位不准确,换了一种定位方式:
driver.switch_to.frame(driver.find_element_by_id(‘login_frame’))
结果仍不行
思考2:是否是iframe框架还没加载出来,添加强制等待
time.sleep(4)
结果仍不行
思考3:是不是和iframe没有关系,找到一个不用跳转iframe就可以定位的元素
如:driver.find_element_by_link_text(‘基本版’).click()
结果不行:提示 selenium.common.exceptions.NoSuchElementException: Message: no such element:
证明确实不是跳转iframe框架问题,整个页面元素都无法定位
思考4:把邮箱页面单独拿出来,直接打开,看是否能够操作元素
结果可操作成功,输入了登录帐号
思考结果:问题原因:是跳转到新页面(由百度跳转到邮箱页面),无法定位元素问题
百度搜索后(https://blog.csdn.net/qq_40027987/article/details/78856204),
找到解决方案应获取新页面句柄:
num=driver.window_handles
#获取当前页句柄
driver.switch_to.window(num[1])
#跳转到新标签页
添加此代码
解决问题 0.0