使用Python进行自动化测试如何切换窗口

我把我的程序写上来,请各位大佬给看看,为什么我明明打开了2个窗口,但是handle依然是一个值。导致切换窗口失败,后续的步骤都无法进行。
#coding=gbk
from selenium import webdriver
import unittest
import time
class Mytest(unittest.TestCase):
def setUp(self):
self.driver=webdriver.Firefox()
url='xxxxxxxxx'
self.driver.get(url)
self.driver.find_element_by_id('userName').clear()
self.driver.find_element_by_id('userName').send_keys('90023')
self.driver.find_element_by_id('password').send_keys('xxxxxx')
self.driver.find_element_by_id('mouse').click()
def test_aj(self):
now_handle=self.driver.current_window_handle
self.driver.find_element_by_class_name('systemTo').click()
print('打开了2个窗口。')
all_handles=self.driver.window_handles
print(all_handles)
self.driver.switch_to.window(all_handles[1])
self.driver.find_element_by_id('para').clear()
self.driver.find_element_by_id('para').send_keys('3175048')
self.driver.find_element_by_class_name('search-button').click()
time.sleep(3)
---------------------
在进行到 print(all_handles)的时候,只打印了一串句柄。往后的切换就肯定会报错了。系统报错:
Traceback (most recent call last):
File "D:\mywork\Pvtest\unittest2\try0902.py", line 20, in test_aj
self.driver.switch_to.window(all_handles[1])
IndexError: list index out of range
就不难理解了,因为在all_handles[]只有一个值。
那么我明明开了2个页面,为什么只有一个值呢?

第1个回答  2018-10-15
把这行代码先注释掉all_handles=self.driver.window_handles
self.driver.switch_to.window(all_handles[1])改成
self.driver.switch_to.window(driver.window_handles[1])本回答被网友采纳