【原创】selenium:百度页面切换测试

本文介绍了使用Python的Selenium库进行自动化测试的简单步骤,包括在百度搜索‘python’和‘selenium’,同时在CSDN中搜索‘selenium’。通过示例代码展示了窗口切换、输入内容和点击搜索等操作,为初学者提供参考。
摘要由CSDN通过智能技术生成

前言

这是一篇作者在学习selenium库的时候,参考其他大佬写的教学验证自己所学的一个小代码

因此也感受到自动化带来的各种方便性,下面提供给刚入门的朋友作一个参考


用法

selenium的用法、用途、优缺点等等可翻看顶部点击率特别高的几位大佬写的教学

传送门链接:

Python Selenium库的使用

selenium用法详解


代码

先上代码,后讲步骤

# !/usr/bin/python3
# -*- coding:utf-8 -*-
# @author:inganxu
# @Date:2021年8月25日
import time                                                                     #导入time模块,主要是为了自动化过程中需要停顿
from selenium import webdriver                                                  #导入selenium

driver = webdriver.Chrome()                                                     #实例化浏览器,我用的是Chrome
driver.maximize_window()                                                        #窗口最大化


driver.get('https://www.baidu.com')                                             #经典百度,最简单的测试网址
time.sleep(1)                                                                   #停顿一下,怕网速没加载好就进入下一步


input_baidu = driver.find_element_by_id('kw').send_keys('python')               #在搜索框中输入“python”
time.sleep(2)                                                                   #这里的停顿是代码运行过程中,让你看得更明显
submit_baidu = driver.find_element_by_id('su').click()                          #点击搜索按钮
time.sleep(2)                                                                   #停顿一下


CSDN = "window.open('https://blog.csdn.net/');"                                 #定义新的窗口的网址,并且实例化给“CSDN”
time.sleep(2)
driver.execute_script(CSDN)                                                     #打开新的窗口,窗口网址是CSDN的官网
time.sleep(3)


handles = driver.window_handles                                                 #获取所有窗口句柄,并实例化给“handles”,handles是个集合
time.sleep(1)
driver.switch_to_window(handles[0])                                             #切换回原来的百度窗口,百度是第一个,所以是handles[0]
time.sleep(1)
driver.find_element_by_id('kw').clear()                                         #清除原来百度窗口的搜索内容
time.sleep(1)
input_baidu2 = driver.find_element_by_id('kw').send_keys('selenium')            #输入新的内容,并实例化
time.sleep(2)
submmit_baidu2 = driver.find_element_by_id('su').click()                        #继续点击搜索按钮
time.sleep(1)

#切换新窗口并输入内容的重点在这里
handle_current = driver.current_window_handle                                   #获取当前窗口句柄(也就是百度窗口)
for i in handles:                                                               #设定i是handles的元素
    if i!=handle_current:                                                       #如果i不等于当前窗口(百度)
        driver.switch_to_window(i)                                              #那么就切换到i窗口(也就是新窗口)直接driver.switch_to_window(handles[1])也行
        input_sougou = driver.find_element_by_id('toolbar-search-input').send_keys('selenium')      #找到csdn的搜索框后输入“selenium”
        time.sleep(1)
        submit_sougou = driver.find_element_by_id('toolbar-search-button').click()          #点击搜索,找不到可以用其他方法来定位,这里用id来定位
        time.sleep(3)
        #注意:点击搜索后,多了一个窗口,但是,当前的窗口句柄仍然是CSDN的官方,所以关闭的不是新弹出的窗口
        driver.close()                                                          #关闭当前网页
        time.sleep(3)
        break

driver.quit()                                                                   #关闭浏览器,少了这个会有残留进程

代码逻辑

1.打开百度网页

2.输入内容"python",并点击搜索

3.新建窗口,并转到"CSDN"官方

4.切换回百度窗口

5.清除原来的搜索内容

6.输入内容"selenium",并点击搜索

7.再切换回CSDN的窗口

8.输入内容"selenium",并点击搜索

9.关闭当前窗口

10.关闭浏览器


操作步骤

步骤1-2

首先,先找到百度搜索框和点击按钮的定位,如图所示:

 从定位上,可以看出,我们可以通过"calss"、"name"、"id"属性来定位,这里用的是id

 所以,语法就是这个,并且输入搜索内容"python"

input_baidu = driver.find_element_by_id('kw').send_keys('python')

接下来,再定位"百度一下"这个按钮的位置

这里可以用"id"、"class"属性来定位

 定位语法如下

submit_baidu = driver.find_element_by_id('su').click()

打开的页面是这样的

步骤3

新建窗口,并转到csdn

CSDN = "window.open('https://blog.csdn.net/');"  

步骤4

获取所有窗口句柄,并实例化给"handles",此时,handles是个集合,因为有两个窗口

切换回百度窗口,百度窗口是第一个窗口,所以是handles[0],列表的第一个元素

handles = driver.window_handles
time.sleep(1)
driver.switch_to_window(handles[0])

步骤5

切换回百度窗口后,清除原来百度搜索窗口的内容

driver.find_element_by_id('kw').clear() 

步骤6

输入内容"selenium",并点击搜索

input_baidu2 = driver.find_element_by_id('kw').send_keys('selenium')
submmit_baidu2 = driver.find_element_by_id('su').click() 

步骤7

再切换回CSDN窗口

这里使用for循环的形式来切换窗口,首先,先获取当前的窗口句柄

handle_current = driver.current_window_handle

然后再用for循环判断,如果"i"窗口不等于当前窗口(百度),那么就切换到"i"窗口(csdn)

for i in handles:
    if i!=handle_current:
        driver.switch_to_window(i)

步骤8

如定位百度的方法一样,打开F12开发者工具,用指针定位到CSDN的搜索框和搜索按钮

这是搜索框

还是使用id属性来定位

语法如下

input_sougou = driver.find_element_by_id('toolbar-search-input').send_keys('selenium') 

 这是搜索按钮

同样用id属性来定位,语法如下

submit_sougou = driver.find_element_by_id('toolbar-search-button').click() 

 步骤9

当步骤8完成后,会弹出新的窗口,如果需要在这个新的窗口操作的话,那么,就需要把窗口句柄移动到新的窗口中,因为,新增窗口不意味着窗口句柄也跟着变了,我们可以用关闭当前窗口来验证一下

driver.close()            #关闭当前网页

关于窗口切换,可以参考下某位大佬写的文章:python selenium打开新窗口与多窗口切换

步骤10

selenium操作完成之后,需要关闭浏览器,不然系统后台还会保留残留的进程

driver.quit() 

以上就是通过学习selenium部分功能,自己动手尝试构造一个自动化测试的代码

等到你对seleium、web网页架构都很熟悉之后就可以尝试自动化办公,自动化运行网页等等.....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inganxu

感谢您的支持!!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值