UI自动化+web端测试基础1

最近研究了web端自动化,发现很好玩啊,以下是一些基础内容,有兴趣,就玩玩吧

1.主要介绍查找控件的八种方式

html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--块元素-->
<div id="my_div" name="my_div" class="my_div">
<input  type="text" name="username" id="username" class="username"><br>
    <input type="password" name="password" id="password" class="password">

</div>
<div id="my_div2" class="my_div2">
   <a href="http://www.baidu.com" id="click" class="click">点击一下</a>
</div>

</body>
</html>

py文件

#-*-coding:utf-8-*-
#倒包
from  selenium import  webdriver
#导入休眠包
import  time
#打开浏览器
driver=webdriver.Firefox()
#设置窗口最大化
driver.maximize_window()
#打开指定网页
driver.get("file:///D:\MyShoppingyuliguo20170922/20171225.html")
#开始查找控件
#8种查找控件的方式
#1.id
#username=driver.find_element_by_id("username")
#2.class
#username=driver.find_element_by_class_name("username")

#3.name
#username=driver.find_element_by_name("username")

# 通过 xpath 定位
# xpaht 分为相对路径 和 绝对路径定位
# 绝对路径定位 / 代表绝对路径
#username=driver.find_element_by_xpath("/html/body/div/input")
# 并列的input标签定位
#username = driver.find_element_by_xpath("/html/body/div[1]/input[2]")
#代表相对路径id name class
#username=driver.find_element_by_xpath("//div[@id='my_div']/input[1]")
#password=driver.find_element_by_xpath("//div[@id='my_div']/input[2]")

# 相对定位 name

# username = driver.find_element_by_xpath("//div[@name = 'my_div']/input[1]")
#
# password = driver.find_element_by_xpath("//div[@name = 'my_div']/input[2]")

# 相对定位的 class
# username = driver.find_element_by_xpath("//div[@class = 'my_div']/input[1]")
# password = driver.find_element_by_xpath("//div[@class = 'my_div']/input[2]")
#
#
# #向里面输入内容
# username.send_keys(u"中国,你好")
# password.send_keys('123456')


#5.tag定位
#a=driver.find_element_by_tag_name("a")
#6.通过内容查找
#a=driver.find_element_by_link_text("点击一下")
#7.通过部分内容去查找
#a=driver.find_element_by_partial_link_text("点击")

#8.通过css去查询数据
#首先css样式的格式 控件的#id或者 控件。class
#a=driver.find_element_by_css_selector("a#click")
#a=driver.find_element_by_css_selector("a.click")
#如果控件本身没有class 同时也没有id 通过父类class或者父类的id来写css
a=driver.find_element_by_css_selector("div.my_div2>a")

# 父类的class
a=driver.find_element_by_css_selector("div.my_div2>a")
# 点击一下
a.click()
#设置休眠时间
time.sleep(2)
#后退到前一个页面
driver.back()
#休眠两秒
time.sleep(2)
#前进到八维
driver.forward()
#休眠两秒
time.sleep(2)
#关闭浏览器
driver.quit()


2.通过form找控件的方式

html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
<!--form表单提交-->
<!--1.get网络请求只能请求128KB数据 post理论上无限请求
    2.get请求的参数在head里面 post请求的参数在body里面
    3.get请求参数URL里面可见,post请求参数不可见
-->
<form method="get">
    <input type="text"name="username"><br>
    <input type="password" name="password"><br>
    <input type="submit" name="commit" value="提交">



</form>
<a href="http://www.baidu.com">点击一下</a>
<div>
    中国,你好!
</div>


</body>
</html>


py文件
#-*- coding:utf-8-*- from selenium import webdriver #导入time import time #打开浏览器 driver=webdriver.Firefox() #设置窗口最大化 driver.maximize_window() #打开指定网页 driver.get("file:///D:\MyShoppingyuliguo20170922/20171226.html") #开始查找控件 username=driver.find_element_by_css_selector("form>input[name='username']") password=driver.find_element_by_css_selector("form>input[name='password']") commit=driver.find_element_by_css_selector("form>input[name='commit']") #注意中文前需要加u username.send_keys(u"于力国") password.send_keys("123456") #获取控件的尺寸,返回的是一个字典 bord=username.size print bord['width'],bord['height'] #获取属性值 print username.get_attribute("type"),username.get_attribute("name") #通过text获取控件内容 #css查找 a=driver.find_element_by_css_selector("body>a") a.click() # print a.text # #判断元素是不是可见 可见返回true,不可见返回false # print username.is_displayed() #清除输入框 #username.clear()    # #点击按钮 # commit.click()  time.sleep(2) #后退到前一个页面 driver.back() time.sleep(2) #前进到八维 driver.forward() #休眠两秒 time.sleep(2) #关闭浏览器 driver.quit() 


3.鼠标事件

html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>鼠标事件</title>
    <!-- 设置css -->
    <style type="text/css">
div{
    width: 200px;
    height: 200px;
    background: #ff0000;

}
    </style>
    <!-- js -->
    <script type="text/javascript">
        function over_div(message) {
        alert(message)
        }
    </script>
</head>
<body>
<div id="my_div1" οnmοuseοver="over_div('鼠标浮动上来了')"οnmοuseοut="over_div('鼠标出去了')"></div>
<div id="my_div"></div>
</body>
</html>

py文件

#-*-coding:utf-8-*-
#倒包
from selenium import  webdriver
#倒包
from selenium.webdriver.common.action_chains import ActionChains

#打开浏览器
driver=webdriver.Firefox()
#打开指定网页
driver.get("file:///D:\MyShoppingyuliguo20170922/2017122602.html")
#设置窗口最大化
driver.maximize_window()
#查找控件
div=driver.find_element_by_css_selector("body>div[id='my_div1']")
#浮动鼠标上来
ActionChains(driver).move_to_element(div).perform()

4.通过css查找元素

html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>无序列表</title>
</head>

<body>
<!-- 放一个无序列表 -->
<ul>
    <li><a href="http://www.baidu.com" class="title">北京</a></li>
    <li><a href="http://www.jd.com" class="title">大连</a></li>
    <li><a href="http://www.taobao.com" class="title">上海</a></li>
    <li><a href="http://www.baidu.com" class="title">广州</a></li>
    <li><a href="http://www.baidu.com" class="title">深圳</a></li>
</ul>

</body>
</html>

py文件

#-*-coding:utf-8 -*-
#倒包
from selenium import  webdriver
#倒包
import  time
#打开浏览器
driver=webdriver.Firefox()
#设置最大化
driver.maximize_window()
#打开指定网页
driver.get("file:///D:\MyShoppingyuliguo20170922/2017122603.html")

#通过css查找一族元素
#lis = driver.find_elements_by_css_selector("body > ul > li")
#lis = driver.find_elements_by_class_name("title")
lis = driver.find_elements_by_tag_name("a")
# 获取列表第一个点击一下
lis[0].click()



# 休眠两秒
time.sleep(2)

# 点击返回按钮
driver.back()

# 休眠两秒
time.sleep(2)

# 关闭
driver.quit()

5.切换frame,

html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>嵌套百度页面</title>
    <style type="text/css">
        #iframeid{
            width: 80%;
            height: 800px;
            border: 0px;
        }

    </style>
</head>
<body>
<iframe src="http://www.baidu.com" id="iframeid"></iframe>

</body>
</html>

py文件

#-*-coding:utf-8-*-
from  selenium import  webdriver
import  time
driver=webdriver.Firefox()
driver.maximize_window()
# driver.get("file:///D:\MyShoppingyuliguo20170922/2017122604.html")
# iframeid=driver.find_element_by_id("iframeid")
# # 切换到frame里面
# driver.switch_to_frame(iframeid)
# kw=driver.find_element_by_id("kw")
# kw.send_keys(u"中国,你好")
# time.sleep(2)
# driver.quit()
# 打开指定网页
driver.get("file:///D:\MyShoppingyuliguo20170922/20171225.html")
# 点击一下
click=driver.find_element_by_link_text("点击一下")
#获取当前窗口
current=driver.current_window_handle
click.click()
# 获取所有的窗口
windows=driver.window_handles
print windows
for windows in windows:
    if current!=windows:
        driver.switch_to_window(windows)

kw=driver.find_element_by_id("kw")
time.sleep(5)
driver.close()
6.三种休眠方式和粘贴复制全选
HTML文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登录</title> </head> <body> <!--form表单提交--> <!--1.get网络请求只能请求128KB数据 post理论上无限请求  2.get请求的参数在head里面 post请求的参数在body里面  3.get请求参数URL里面可见,post请求参数不可见 --> <form method="get"> <input type="text"name="username"><br> <input type="password" name="password"><br> <input type="submit" name="commit" value="提交"> </form> <a href="http://www.baidu.com">点击一下</a> <div> 中国,你好! </div> </body> </html>


py文件

#-*-coding:utf-8-*-
from selenium import  webdriver
#引入key包
from selenium.webdriver.common.keys import  Keys
import  time

#导入休眠包
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import  expected_conditions as EC
from  selenium.webdriver.common.by import  By


driver=webdriver.Firefox()
driver.maximize_window()
driver.get("file:///D:\MyShoppingyuliguo20170922/20171226.html")
#通过css查找控件
username=driver.find_element_by_css_selector("form>input[name='username']")
password=driver.find_element_by_css_selector("form>input[name='password']")
#首先在用户名中输入内容
username.send_keys(u"大饼")
time.sleep(5)
# 通过全选选中,来复制用户名,粘贴到密码框
# 选中全部输入的内容
#username.send_keys(Keys.CONTROL,'A')
# time.sleep(5)
# username.send_keys(Keys.CONTROL,'C')
#time.sleep(2)
# 清空用不输入框
#username.clear()
# time.sleep(5)
# username.send_keys(Keys.CONTROL,'V')
#获取title
print  driver.title
#获取URL
print driver.current_url



#1.强制休眠 time包 设置固定的时间去等待,时间从代码执行的这一行开始计时
#time.sleep("设置休眠时间")
#2.隐式等待 webdriver 自带的设置休眠时间 这种当时的休眠时间是对整个页面起作用的
#driver.implicitly_wait("休眠的时间")
#3.显示等待 设置固定的时间,同时设置每隔几秒去访问浏览器看看元素有没有被加载出来,如果元素加载出来,休眠结束,执行下面代码
#如果没有元素被加载出来,在固定时间内继续休眠,如果超出时间抛异常

#显示等待
#python中抛异常
# try:
#     # 在查找控件之前首先需要检查元素有没有被加载出来
#     name=(By.NAME,"username")
#     # 设置等待
#     WebDriverWait(driver,20,1).until(EC.presence_of_element_located(name))
#     # 查找控件
#     username=driver.find_element_by_name("username")
# except Exception,e:
#     print "没有加载出来",e
#隐式等待
driver.implicitly_wait(5)
# # 强制等待
#
# time.sleep(5)
driver.quit()

7.下拉框处理
html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>下拉框处理</title>
</head>
<body>
<select id="my_select">
    <option value="1990">1990</option>
    <option value="1991">1991</option>
    <option value="1992">1992</option>
    <option value="1993">1993</option>
    <option value="1994">1994</option>
</select>

</body>
</html>
py文件

#-*-coding:utf-8-*- from selenium import webdriver import time driver=webdriver.Firefox() driver.get("file:///D:\MyShoppingyuliguo20170922/2017122605.html") #查找控件 my_select=driver.find_element_by_id("my_select") #选择1993 my_select.find_element_by_xpath("//option[@value='1993']").click() #设置休眠 time.sleep(2) driver.quit()


8.alter
HTML文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>alert</title>
    <style type="text/css">
        #my_div{
            width: 100px;
            height: 100px;
            background: #ff0000;
        }

    </style>
    <script type="text/javascript">
        function function_name() {
            var message=prompt("请输入内容")
            alert(message)
        }


    </script>

</head>
<body>
<div οnclick="function_name()"id="my_div"></div>

</body>
</html>
py文件

#-*-coding:utf-8-*- from selenium import webdriver import time driver=webdriver.Firefox() driver.maximize_window() driver.get("file:///D:\MyShoppingyuliguo20170922/2017122606.html") my_div=driver.find_element_by_id("my_div") my_div.click() time.sleep(1) #接收alert alert=driver.switch_to_alert() #输入内容 alert.send_keys(u"大连必胜") # #点击接收按钮 # alert.accept() #点击取消 alert.dismiss() time.sleep(2) driver.quit()


9.上传文件
HTML文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>

</head>
<body>
<form method="post">
    <input type="file" name="files">
</form>


</body>
</html>
py文件

#-*-coding:utf-8-*- from selenium import webdriver import time driver=webdriver.Firefox() driver.maximize_window() driver.get("file:///D:\MyShoppingyuliguo20170922/2017122607.html") files=driver.find_element_by_name("files") files.send_keys("C:\Users\Administrator\Desktop\aaa.xlsx") time.sleep(10) driver.quit() 10.文件下载 py文件 
#-*-coding:utf-8-*- from selenium import webdriver #导入os包 import os fp=webdriver.FirefoxProfile() # browser.downlboad.folderList 为0的时候下载到默认路径,为2的可以指定浏览器下载的路径 fp.set_preference("browser.download.folderList",2) # browser.download.manager.showWhenStarting True fp.set_preference("browser.download.manager.showWhenStarting",True) # browser.download.dir 指定文件的保存路径 fp.set_preference("browserdownload.dir", os.getcwd()) # browser.helperApps.neverAsk.saveToDisk 指定文件类型 fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream") # 打开浏览器 browser = webdriver.Firefox(firefox_profile=fp) # 设置最大化 browser.maximize_window() #访问网络请求 browser.get("下载文件的地址") # 点击按钮下载 # browser.find_element_by_link_text("selenium-3.8.0.tar.gz").click() 

11.js,这个模块有点问题,我还没想起来,附上日后在更
html文件

<html> <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>js</title>
    <script type="text/javascript"
            async=""
            src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css"
          rel="stylesheet" />
    <script type="text/javascript">
        $(document).ready(function(){ $('#tooltip').tooltip({"placement": "right"});
        }); </script>
</head>
<body>
<h3>js</h3>
<div class="row-fluid">
    <div class="span6 well">
        <a id="tooltip" href="#" data-toggle="tooltip" title=" selenium-webdriver(python)">hover to see
            tooltip</a>
        <a class="btn">Button</a>
    </div> </div>
</body>
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
</html>


py文件

#-*-coding:utf-8-*-
from selenium import  webdriver
import time,os
driver=webdriver.Firefox()
file_path="file:///D:\MyShoppingyuliguo20170922/2017122701.html "
driver.get(file_path)
#通过Js隐藏选中的元素
#第一种方法隐藏文件信息
driver.execute_script('$("#tooltip").fadeOut();')
time.sleep(5)
#隐藏按钮
button=driver.find_element_by_class_name('btn')
driver.execute_script('$(argument[2].fadeOut()',button)
time.sleep(5)
driver.quit()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值