自动化测试Selenium+Python+UnitTest系列详细教程二:浏览器常用操作

Web自动化测试模拟用户进行真实业务操作,常用操作除了点击,输入文本,还有几下几种:

  •   刷新页面:  driver.refresh()
  •   获取浏览器窗口大小:driver.get_window_size()
  •   设置浏览器窗口大小:driver.set_window_size()
  •   浏览器最大化窗口:driver.maximize_window()
  •   浏览器全屏:driver.fullscreen_window()
  •   获取浏览器窗口个数:driver.get_window_handle,返回的是一个列表
  •   切换到指定窗口: driver.switch_to.window()
  •   前进:driver.forward()
  •   后退:driver.back()
  •   关闭:driver.close() 关闭当前窗口
  •   退出:driver.quit()  完全退出浏览器
  • 上传文件:send_keys()
  • alert弹窗,confirm弹窗处理
  • 获取当前title/url/源代码 :driver.title()、driver.current_url()、 driver.page_source

浏览器窗口大小设置

# -*- coding: utf-8 -*-
# @Time : 2021/7/20 14:09
# @Author : 一诺教育
from selenium import webdriver
# 驱动打开谷歌浏览器
driver = webdriver.Chrome()      
# 访问网址
driver.get("https://www.baidu.com")

#获取浏览器窗口大小
size=driver.get_window_size()
# 运行结果:浏览器窗口大小为: {'width': 1051, 'height': 806}
print('浏览器窗口大小为:',size) 

#设置浏览器窗口宽为900,高为500
driver.set_window_size('900','500')  

#浏览器窗口最大化
driver.maximize_window()

#浏览器窗口最小化
driver.switch_to.window()

#浏览器全屏
driver.fullscreen_window()

浏览器窗口切换

from selenium import webdriver
# 驱动打开谷歌浏览器
driver = webdriver.Chrome()
# 访问百度首页
driver.get("https://www.baidu.com")
#点击百度首页中的"新闻",在当前浏览器打开了一个新的窗口
driver.find_element_by_xpath('//*[@id="s-top-left"]/a[1]').click()

# 1.获取当前窗口个数
handles = driver.window_handles  # 返回的是一个列表
print(handles)

#2.切换到第二个窗口,窗口索引从0开始, 1代表第二个窗口
driver.switch_to.window(handles[1])  # 切换窗口

# 打印当前窗口的url
print(driver.current_url)

执行结果:

#返回了窗口个数的列表,2个window代表当前俩个窗口
['CDwindow-FF716406C16960EAA7D5419B21BFC15A', 'CDwindow-42656592A040F3A485F7A1D8F1C23FBA']

http://news.baidu.com/  #切换到新窗口的url

案例环境准备:

下面是一个包含文件上传、alert、confirm弹窗的网页,把以下html代码拷贝到一个新建文本文档中,可以取名为test.html,放到桌面

<!DOCTYPE html>
<html lang="en">
<head>
      <meta charset="UTF-8">
      <title>练习selenium定位元素页面</title>
<style type="text/css">
    table{font-size:26px;text-align:center;width:80%;border-collapse:collapse;margin:auto}
    table th{background: #aff}
    .display{color:red}
    .widgetStyle{text-align:left;padding-left:100px}
</style>
     <script language= "javascript" type="text/javascript">
            function clickbutton(flag)
            {
                if (flag == 1) alert("测试alert对话框");
                if (flag == 2)
        {
            var name=prompt("测试prompt对话框","");
                  if (name!=null && name!="")
                    {
                        //document.write(name);
                    alert(name);
                    }
        }
                if (flag == 3)
        {
                var r=confirm('测试confirm对话框', '测试confirm对话框?',"测试结果:")
                  if (r==true)
                    {
                        //document.write("You pressed OK!")
                    alert("You pressed OK!");
                    }
                  else
                    {
                        //document.write("You pressed Cancel!")

                    alert("You pressed Cancel!");
                    }
        }
        if (flag == 4)

            alert(document.getElementById("edit").value);


                }




        function getOptions()
          {
              var x=document.getElementById("Selector");
              var y=x.options[x.selectedIndex].text
              // document.write(y);
            alert(y);
          }
        </script>
    </head>

    <body>
    <p>welcome{{username}}</p>
    <h3>测试执行页面</h3>
        <center>
    </br>
    <div>
    <p>

    <div class="text" style="font-size:36px;text-align:center"><b>定位元素练习</b></div>
    </p>
        <hr>
        </div>
    <p>
        <table id="testtable" cellpadding="10" cellspacing="0" border="2">
        <thead>
            <tr>
                <th width=20% class="widgetleft">测试内容</th>
                <th width=80% class="widgetStyle">页面基本元素</th>
            </tr>
        </thead>
            <tr>
                <td>文件上传</td>
                <td><input type="file"  id="files"  name="attach[]"  /></td>
            </tr>

            <tr>
                <td>alter对话框</td>
                <td>
                    <input type="button" name="alterbutton" value="测试alter对话框"  onclick = "clickbutton(1);" />
                </td>
            </tr>
            <tr>
                <td>confirm对话框</td>
                <td>
                    <input type="button" name="confirmbutton" value="测试confirm对话框"  onclick = "clickbutton(3);" />
                </td>
            </tr>
            </table>
       </p>


        </center>
    </body>
</html>

上传文件:

        1. input标签

         input标签是可以直接send_keys()方法实现上传的:

from selenium import webdriver
# 驱动打开谷歌浏览器
driver = webdriver.Chrome()
# 访问本地html文件
driver.get("file:///C:/Users/admin/Desktop/test.html")

#定位到上传文件input标签
files=driver.find_element_by_id('files')

#传入文件路径
files.send_keys(r'C:\Users\admin\Desktop\图片\logo1.png')

        2.非input标签

如果上传文件标签不是input框实现,比如是a标签/div/button的,就只能打开windows系统的弹框,去处理弹框。解决方案有几下几种:

  1. Python pywin32库
  2. SendKeys库
  3. autoIT
  4. keybd_event


 

alert弹窗处理

# @Author : 一诺教育
import time
from selenium import webdriver
# 驱动打开谷歌浏览器
driver = webdriver.Chrome()
# 访问本地html文件
driver.get("file:///C:/Users/admin/Desktop/test.html")

#点击页面alert弹窗
driver.find_element_by_name('alterbutton').click()

time.sleep(3)
#点击确定关闭弹窗
driver.switch_to.alert.accept()

confirm弹窗处理

# @Author : 一诺教育
import time
from selenium import webdriver
# 驱动打开谷歌浏览器
driver = webdriver.Chrome()
# 访问本地html文件
driver.get("file:///C:/Users/admin/Desktop/test.html")

#点击页面confirm弹窗
driver.find_element_by_name('confirmbutton').click()

time.sleep(3)
#点击“确定”
driver.switch_to.alert.accept()

#点击“取消”
#driver.switch_to.alert.dismiss()

获取当前title/url/源代码

#获取当前页面url
url=driver.current_url
print("url是:",url)

#获取当前页面title
title=driver.title
print("title是:",title)

#获取当前页面源代码
source=driver.page_source
print("源代码是:",source)

 正在学习软件测试的小伙伴,想学习web/接口自动化测试,测试开发,性能测试,或者想搭建属于自己的一套自动化测试框架。或者正在找工作的朋友可以去B站我的主页清风说测试开发的个人空间_哔哩哔哩_Bilibili看看视频,免费无广告,给大家一些面试题的还包括解题思路,测试思维最重要

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值