文档章节

Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 <上>

o
 osc_mervd488
发布于 2018/04/25 00:23
字数 776
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

前置步骤:


 

  上一篇的Python单元测试框架unittest,我认为相当于功能测试测试用例设计中的用例模板,在自动化用例的设计过程中,可以封装一个模板,在新建用例的时候,把需要测试的步骤添加上去即可;

  而现在要做的就是学习如何定位页面元素,告诉系统我要找到什么UI元素,然后才能进一步的采取其他措施;

  其实不想写这篇内容,可是又觉得如果去官方文档找信息又效率慢,那么我就将常用的步骤归纳,那样可以快速查阅解决问题。 

  参考英文官方资料:http://selenium-python.readthedocs.io/locating-elements.html

 

学习目的:


 

  掌握元素的基础定位方法,常用的八种方法。

 

正式步骤:


 

step1: 定位一个或者多个页面元素的方法汇总

①定位单个页面元素的方法

  • find_element_by_id(使用id)
  • find_element_by_name(使用name属性值)
  • find_element_by_xpath(使用XPath)
  • find_element_by_link_text(使用显示文本)
  • find_element_by_partial_link_text(使用超链接文本)
  • find_element_by_tag_name(使用标签名)
  • find_element_by_class_name(使用类名)
  • find_element_by_css_selector(使用CSS选择器)

 

② 定位一组页面元素的方法,定位成功过后,会以列表的形式返回所有定位到的页面元素

  • find_elements_by_name(使用name属性值)
  • find_elements_by_xpath(使用XPath)
  • find_elements_by_link_text(使用超链接)
  • find_elements_by_partial_link_text(使用部分超链接)
  • find_elements_by_tag_name(使用标签名)
  • find_elements_by_class_name(使用类名)
  • find_elements_by_css_selector(使用CSS选择器)

step2: 以单个页面元素的定位方法示例

  以百度首页为测试版本,测试浏览器使用chrome浏览器,相应的驱动放到Python的D:\Python36\Scripts目录下,注意驱动的版本要对应selenium版本

  1. find_element_by_id
    from selenium import webdriver
    import time
    
    url = 'https://www.baidu.com'
    
    driver = webdriver.Chrome()
    driver.get(url)
    driver.find_element_by_id('kw').send_keys('python')
    time.sleep(3)
    driver.close()

     

  2. find_element_by_name
    from selenium import webdriver
    import time
    
    url = 'https://www.baidu.com'
    
    driver = webdriver.Chrome()
    driver.get(url)
    driver.find_element_by_name('wd').send_keys('python')
    time.sleep(3)
    driver.close()

     

  3. find_element_by_xpath
    用chrome浏览器打开百度首页,右键点击搜索框,选择“检查”,或者按F12打开开发者工具,使用chrome浏览器自带的复制xpath工具,来获取xpath
    # -*-  coding:utf-8 -*-
    
    from selenium import webdriver
    import time
    
    url = 'https://www.baidu.com'
    
    driver = webdriver.Chrome()
    driver.get(url)
    driver.find_element_by_xpath('//*[@id="kw"]').send_keys('python')
    time.sleep(3)
    driver.close()

     

  4. find_element_by_css_selector
    参考上例,使用开发者工具复制css_selector,需要指出的是,css运行效率比xpath快,但是维护性差,可实际工具中,xpath定位占主导地位,所以优先xpath吧

  5. find_element_by_link_text
    # -*-  coding:utf-8 -*-
    
    from selenium import webdriver
    import time
    
    url = 'https://www.baidu.com'
    
    driver = webdriver.Chrome()
    driver.get(url)
    driver.find_element_by_link_text('把百度设为主页').click()
    time.sleep(3)
    driver.quit()

     

  6. find_element_by_partial_link_text
    # -*-  coding:utf-8 -*-
    
    from selenium import webdriver
    import time
    
    url = 'https://www.baidu.com'
    
    driver = webdriver.Chrome()
    driver.get(url)
    driver.find_element_by_partial_link_text('把百度设为').click()
    time.sleep(3)
    driver.quit()

     

  7. find_element_by_tag_name
    # -*-  coding:utf-8 -*-
    
    from selenium import webdriver
    import time
    
    url = 'https://www.baidu.com'
    
    driver = webdriver.Chrome()
    driver.get(url)
    tag = driver.find_element_by_tag_name('title')
    if tag:
        print('pass')
    driver.quit()

     

  8. find_element_by_class_name
    # -*-  coding:utf-8 -*-
    
    from selenium import webdriver
    import time
    
    url = 'https://www.baidu.com'
    
    driver = webdriver.Chrome()
    driver.get(url)
    tag = driver.find_element_by_class_name('s_ipt').send_keys('python')
    time.sleep(3)
    driver.quit()

     

学习总结:


 

  元素的定位需要自己在实际的工作中总结出常用的定位方法,后续再总结元素的定位方法

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

Eclipse_JavaEE_Tomcat_MySQL环境配置

安装java环境,配置系统变量(JAVA_HOME,绝对路径) 下载eclipse+Tomcat+mysql window——》preference——》server——》runtime——》tomcat环境 项目右键build path 配mysql jar ,libra...

愿有时光可回首
45分钟前
20
0
MySQL原理 - InnoDB引擎 - 行记录存储 - Redundant行格式

本文基于 MySQL 8 在上一篇:MySQL原理 - InnoDB引擎 - 行记录存储 - Compact格式 中,我们介绍了什么是 InnoDB 行记录存储以及 Compact 行格式,在这一篇中,我们继续介绍其他三种行格式。 ...

zhxhash
今天
17
0
leetcode面试题 17.13(恢复空格)--Java语言实现

求: 哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!"已经变成了"iresetthecomputeritstilldidntboo...

拓拔北海
今天
19
0
B站跨年晚会究竟做对了什么?

燃财经(ID:rancaijing)原创 作者 | 赵磊 编辑 | 周昶帆 “补课”是《bilibili晚会 二零一九最美的夜》这个视频中,观众在前两分钟刷得最多的弹幕,寓意着观众是在元旦之后回来补看跨年晚会...

子乾建建_Jeff
01/07
55
0
关于Scrapy爬虫项目运行和调试的小技巧(上篇)

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 迟日江山丽,春风花草香。泥融飞燕子,沙暖睡鸳鸯。 扫除运行Scrapy爬虫程序...

yuhan336
04/02
26
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部