前章记录了简单实现Chrome自动搜索,此时想完善一下测试场景,于是想着添加了一个随机打开搜索结果的动作
一、根据百度搜索页面的html找到搜索结果的标签类名为 result
elements=driver.find_elements_by_class_name('result')
二、尝试打开获取到的第一个跳转,点击成功
elements[0].find_element_by_tag_name('a').click()
三、加入了随机数,窗口打开正常
#导入随机数模块
import random
num=random.randint(0,9)
elements[num].find_element_by_tag_name('a').click()
四、此时浏览器上有2个窗口,新打开的窗口没有自动聚焦。由于只有搜索打开动作,我这里只简单的用句柄来判断一下
#定义当前窗口句柄(百度)
baidu_handle = driver.current_window_handle
#获取当前窗口句柄集合
handles = driver.window_handles
print(handles)
# 获取新窗口
new_handle = None
for handle in handles:
if handle != baidu_handle:
#捕获新打开的窗口
new_handle = handle
print('switch to ', handle)
#新窗口打开搜索结果
driver.switch_to.window(new_handle)
成功!
详细代码如下:
#coding=utf-8
#导入时间模块
import time
#导入随机数模块
import random
from selenium import webdriver
#打开Chome浏览器
driver=webdriver.Chrome()
#浏览器窗口最大化
driver.maximize_window()
first_url='http://www.baidu.com'
#打开百度
driver.get(first_url)
print ("access to %s " %(first_url))
#搜索框输入hello world
driver.find_element_by_id("kw").send_keys("hello world")
#点击搜索按钮
driver.find_element_by_id("su").click()
time.sleep(2)
#搜索页面的截图,保存到本地桌面
driver.save_screenshot('baidu.png')
#根据百度页面html分析,找到跳转元素
elements=driver.find_elements_by_class_name('result')
#此处取搜索结果第一个
#elements[0].find_element_by_tag_name('a').click()
#此处取搜索结果0~9任一个
num=random.randint(0,9)
elements[num].find_element_by_tag_name('a').click()
#定义当前窗口句柄(百度)
baidu_handle = driver.current_window_handle
#获取当前窗口句柄集合
handles = driver.window_handles
print(handles)
# 获取新窗口
new_handle = None
for handle in handles:
if handle != baidu_handle:
#捕获新打开的窗口
new_handle = handle
print('switch to ', handle)
#新窗口打开搜索结果
driver.switch_to.window(new_handle)
#截图,保存到本地桌面
driver.save_screenshot('result.png')
time.sleep(3)
#退出整个浏览器
driver.quit()