窗口最大化、页面切换的另一种操作

# 基于 ActionChains 类的浏览器自动化交互

基于 ActionChains 类的浏览器自动化交互
基于 ActionChains 类的自动化交互案例:百度自动化搜索

窗口最大化

driver.maximize_window()

页面前进和后退

操作页面的前迚和后退功能:

driver.forward() #前进
driver.back() # 后退

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.implicitly_wait(3) # seconds

first_url = 'http://www.baidu.com/'
driver.get(first_url)
print(driver.title) # 第一个页面
driver.find_element_by_link_text("新闻").click()
driver.switch_to_window(driver.window_handles[0])
print(driver.title) # 第一个页面
#browser.switch_to_window(browser.window_handles[1])
#browser.title # 最后一个页面
time.sleep(2)
driver.back() # 从百度新闻后退到百度首页
print(driver.title) # 第一个页面
time.sleep(2)
driver.forward() # 百度首页前进到百度新闻
print(driver.title) # 第一个页面
time.sleep(2)
driver.quit()

运行结果
百度一下,你就知道
百度新闻——全球最大的中文新闻平台
百度一下,你就知道
百度新闻——全球最大的中文新闻平台

页面切换

一个浏览器肯定会有很多窗口,切换窗口的方法如下:

driver.switch_to.window(“this is window name”)

也可以使用 window_handles 方法来获取每个窗口的操作对象。例如:

for handle in driver.window_handles:
    driver.switch_to_window(handle)

选项卡管理

通过执行 js 命令实现新开选项卡 window.open()
不同的选项卡是存在列表里 browser.window_handles
通过 browser.window_handles[0] 就可以操作第一个选项卡

import time
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('http://www.baidu.com')
time.sleep(5)
print(browser.window_handles)
browser.execute_script('window.open()')  # 打开新的窗口
print(browser.window_handles)
browser.switch_to.window(browser.window_handles[1])  # 切换到第二个窗口
browser.get('http://www.taobao.com')
time.sleep(5)
browser.switch_to.window(browser.window_handles[0])  # 切换到第一个窗口
print(browser.window_handles)
print(browser.title)
time.sleep(5)
browser.switch_to.window(browser.window_handles[1])  # 切换到第二个窗口
print(browser.title)
time.sleep(2)
browser.get('http://python.org')  # 在第二个窗口进入新连接
time.sleep(2)
print(browser.title)
browser.quit()