多窗口之间切换利用selenium的switch_to.window()来处理。首先打开页面A,然后在页面A点击一个链接,会触发在新Tab或新窗口。由于之前的driver实例对象在页面A, 即(driver.current_window_handle仍在页面A), 但是接下来的脚本是操作页面B的元素,这样就造成了找不到元素的错误。这时可以用selenium中switch_to.window()来进行页面的切换。
1. 在浏览器中新开一个tab
import time
from selenium import webdriver
from selenium.webdriver.common.keysimport Keys
import os
file_path = os.path.dirname(os.path.abspath('.'))+"/tools/chromedriver.exe"
driver = webdriver.Chrome(file_path)
driver.maximize_window()
driver.get("https://www.baidu.com") #先打开一个网页
driver.implicitly_wait(5)
newwindow ='window.open("http://xueshu.baidu.com/")'
driver.execute_script(newwindow) #打开一个新窗口
driver.switch_to.window(driver.window_handles[1])#移动句柄,对新打开页面进行操作
time.sleep(1)
2. 点击单选按钮:
for i in driver.find_elements_by_xpath("//*/input[@type='radio']"):
i.click()