问题描述:
在web自动化测试过程中,如果点击一个按钮,打开一个新的窗口,那么后续的新页面的点击操作,无响应
出现原因:
两个窗口之间,可能有相同的页面元素。比如输入框,在两个页面上的id可能是一样的
实验两个id一样的输入框,在两个不同的窗口,输入内容。可以发现,根据id输入的内容,sendkeys之后,会输入到原来的窗口中
所以,浏览器打开新窗口后,selenium仍然在原来的窗口工作
解决方案:
1、找到新窗口的名字
window_handles找到浏览器中所有的窗口,从左往右零开始排序。
如果只打开两个,查找新的窗口则为【1】
如果打开三个,查找新的窗口则为【2】
从后往前,查找最后一个【-1】
#【-1】保证永远找到最后一个窗口
new_window = driver.window_handles[-1]
2、切换到新窗口
driver.switch_to.window(new_window)
补充:
切换到新的frame
#点击商品管理
driver.find_element_by_link_text('商品管理').click()
#切换frame参数是frame的name或id
driver.switch_to.frame('mainFrame')
#添加商品
driver.find_element_by_css_selector('.n11.z_side hover').click()