前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《手把手教你》系列练习篇之5-python+ selenium自动化测试(详细教程)

《手把手教你》系列练习篇之5-python+ selenium自动化测试(详细教程)

作者头像
北京-宏哥
发布2019-12-10 16:27:16
2.1K0
发布2019-12-10 16:27:16
举报

1. 简介

  今天我们继续前边的练习,学习和练习一下:如何使用webdriver方法获取操作复选框-CheckBox、测试不同的分辨率、如何断言title、如何获取某一个元素的text属性值等等,这些小练习,来巩固基础。

2.操作复选框-Checkbox

本小节介绍Selenium中,如何操作复选框-Checkbox,最终的方法还是click()。

本来想还是继续采用for语句来把所有的复选框勾选一遍,例如这样的场景:注册一个网站勾选身份或者职业的时候,由于没有找到合适的demo网站。这里还是以百度举例,登录时,勾选下次自动登录:

(1)访问百度主页面,点击百度首页的“登录”,xpath定位如下:

(2)点击“用户名登录”,xpath定位如下图:

(3)点击下次自动登录点选按钮,xpath定位如下:

相关脚本代码如下:

2.1 代码实现:
2.2 参考代码:
代码语言:javascript
复制
# coding=utf-8?

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-12-04
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium自动化测试练习篇5
'''

# 3.导入模块
import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com')
driver.implicitly_wait(8)

driver.find_element_by_xpath("//*[@id='u1']/a[7]").click()
time.sleep(1)
driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__footerULoginBtn']").click()
time.sleep(1)
driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__memberPass']").click()
time.sleep(1)
driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__memberPass']").click()
2.3 运行结果:

运行代码后,控制台打印如下图的结果

由于这个勾选是默认选中的,这里方便观察点击效果,点击了两次。如果有多个复选框,考虑用for循环,参考前面radio button的方法。

3. 测试不同分辨率

本小节来学习下如何通过Selenium方法,设置符合不同测试场景浏览器窗口大小。例如,你有一台机器,最大支持1366*768,你完全可以利用这个机器测试不同分辨率下的场景。

相关测试脚本代码如下:

3.1 代码实现:
3.2 参考代码:
代码语言:javascript
复制
# coding=utf-8?

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-12-04
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium自动化测试练习篇5
'''

# 3.导入模块
import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window() # 全屏
driver.get('https://www.baidu.com')
time.sleep(1)
print (driver.get_window_size())

driver.set_window_size(1280,800) # 分辨率 1280*800
time.sleep(1)
print (driver.get_window_size())

driver.set_window_size(1024,768) # 分辨率 1024*768
time.sleep(1)
print (driver.get_window_size())
3.3 运行结果:

运行代码后,控制台打印如下图的结果

4. title断言方法

本小节介绍一个Selenium中页面title断言方法,这个在以后的断言中会用到,大致都是换汤不换药,照猫画虎就可以了,但是在这里一定要认真学习和练习,后边应用起来才回得心应手。

相关脚本代码如下:

4.1 代码实现:
4.2 参考代码:
代码语言:javascript
复制
# coding=utf-8?

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-12-04
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium自动化测试练习篇5
'''

# 3.导入模块
import time
from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com')
time.sleep(1)
# 方法一
try:
    assert u"百度一下" in driver.title
    print ('Assertion test pass.')
except Exception as e:
    print ('Assertion test fail.', format(e))
# 方法二
if u"百度一下,你就知道" == driver.title :
    print ('Assertion test pass.')
else:
    print ('Assertion test fail.')

print(driver.title)
4.3 运行结果:

运行代码后,控制台打印如下图的结果

方法一,是利用python中Assert方法,采用包含判断,方法二是通过if方法,采用完全相等方法,建议选择第一种方法。

u"百度一下,你就知道"

这u代表unicode的意思,由于我们这里采用了python 2, 如果你使用pyn3 就不需要,在Python3中,字符串默认采用unicode存储。

5. 获取某一个元素的text属性值

  本小节介绍如何通过Selenium方法来获取某一个元素的text属性值。在很多自动化测试脚本中,需要多次获取元素的text值,拿过来进行对比和匹配。例如,在一个登陆界面,如果不输入用户名和密码,直接点击登录,肯定会有相关错误提醒。这个错误,我们需

要通过selenium抓取出来,和需求说明文档中的描述去进行匹配,如果匹配,测试成功,否则失败。

这里用百度登录举例:

需要通过Selenium脚本去自动判断是否显示错误文字“请您填写手机/邮箱/用户名”,前边已经定位到这个页面,这里就不再赘述了,这里需要定位“登录”按钮,定位text的属性值。

(1)定位“登录”按钮

(2)定位text的属性值

相关脚本代码如下:

5.1 代码实现:
5.2 参考代码:
代码语言:javascript
复制
# coding=utf-8?

# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行

# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-12-04
@author: 北京-宏哥   QQ交流群:705269076
Project: python+ selenium自动化测试练习篇5
'''

# 3.导入模块
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys


driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(6)

driver.get("http://www.baidu.com/")
time.sleep(1)
#点击百度首页“登录”按钮
driver.find_element_by_xpath("//*[@id='u1']/a[7]").click()
time.sleep(1)
#点击“用户名登录”
driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__footerULoginBtn']").click()
#点击登录页面的“登录”按钮
driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__submit']").click()
# 断言方法一
try :
    error_message = driver.find_element_by_xpath("//*[@id='TANGRAM__PSP_10__error' and text()='请您输入手机/邮箱/用户名']").is_displayed()
    print ("Test pass. the error message is display.")
except Exception as e:
    print ("Test fail.", format(e))

# 断言方法二,本文重点介绍方法
error_mes = driver.find_element_by_xpath(".//*[@id='TANGRAM__PSP_10__error']").text
try:
    assert error_mes == u'请您输入手机/邮箱/用户名'
    print ('Test pass.')
except Exception as e:
    print ("Test fail.", format(e))
5.3 运行结果:

运行代码后,控制台打印如下图的结果

总结:

要获取到目标元素的text的值,需要定义一个目标元素element,然后通过element.text方法得到字符串,注意不是element.text(),这个方法是没有带小括号的。上面介绍了两个方法,方法一是,直接把字段写入XPath表达式,如果通过该XPath能定位到元素,说明这个

错误字段已经在页面显示;方法二是通过该目标元素节点,然后通过element.text得到值,在拿得到的text值取和期待的结果去字符串匹配。建议在自动化测试脚本开发中,采用第二个方法。

6.小结

好了,今天的练习就到这里,希望大家好好的练习和理解。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-12-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 简介
  • 2.操作复选框-Checkbox
    • 2.1 代码实现:
      • 2.2 参考代码:
        • 2.3 运行结果:
        • 3. 测试不同分辨率
          • 3.1 代码实现:
            • 3.2 参考代码:
              • 3.3 运行结果:
              • 4. title断言方法
                • 4.1 代码实现:
                  • 4.2 参考代码:
                    • 4.3 运行结果:
                    • 5. 获取某一个元素的text属性值
                      • 5.1 代码实现:
                        • 5.2 参考代码:
                          • 5.3 运行结果:
                          • 6.小结
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档