前置步骤:


  上一篇的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()

学习总结:


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

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

  1. Python3 Selenium自动化web测试 ==> 第二节 页面元素的定位方法 -- iframe专题 <下>

    学习目的: 掌握iframe矿建的定位,因为前端的iframe框架页面元素信息,大多时候都会带有动态ID,无法重复定位. 场景: 1. iframe切换 查看iframe 切换iframe 多个ifr ...

  2. Python3 Selenium自动化web测试 ==> 第九节 WebDriver高级应用 -- 操作select 和 alert

    学习目的: 掌握页面常规元素的定位方法 场景: 网页正常的select元素下拉框常规方法和select专属方法 正式步骤: step1:常规思路select页面元素定位 处理HTML代码截图 # -* ...

  3. Python3 Selenium自动化web测试 ==> 第一节 起始点之Python单元测试框架 unittest

    前置步骤 Python版本:3.6.4 selenium版本:3.11.0 >>> import selenium >>> help(selenium) IDE:P ...

  4. Python3 Selenium自动化web测试 ==> 第三节 常用WebDriver API使用示例上(24个API)

    前置步骤: 安装selenium,chrome驱动,Python3.6 学习目的: 常见API的使用 涉及的API: step1: 访问一个网址 step2: 网页的前进和后退 step3: 刷新当前 ...

  5. Python3 Selenium自动化web测试 ==> 第十节 WebDriver高级应用 -- xpath语法

    学习目的: xpath定位是针对常规定位方法中,最有效的定位方式. 场景: 页面元素的定位. 正式步骤: step1:常规属性 示例UI 示例UI相关HTML代码 相关代码示例: #通过id定位 dr ...

  6. Python3 Selenium自动化web测试 ==> 第六节 WebDriver高级应用 -- 操作web页面的滚动条

    学习目的: 掌握页面元素定位以外的其他重要知识点. 正式步骤: 测试Python3代码 # -*- coding:utf-8 -*- from selenium import webdriver fr ...

  7. Python3 Selenium自动化web测试 ==> 第五节 WebDriver高级应用 -- 使用JavaScript操作页面元素

    学习目的: 中级水平技术提升 在WebDriver脚本代码中执行JS代码,可以解决某些 .click()方法无法生效等问题 正式步骤: Python3代码如下 # -*- coding:utf-8 - ...

  8. Python3 Selenium自动化web测试 ==>FAQ:隐式等待和sleep区别

    FAQ: 情景1: 设置等待时间 A方法:sleep 线程休眠,但只单次有效,其他操作需要加载等待时间,需要再次添加time.sleep() B方法:implicitly_wait() from se ...

  9. Python3 Selenium自动化web测试 ==> 第七节 WebDriver高级应用 -- 浮动框中,单击选择某个关键字选项

    学习目的: 了解WebDriver的高级应用 正式步骤: 测试Python3代码 # -*- coding:utf-8 -*- from selenium import webdriver from ...

随机推荐

  1. JAVA WEB之Servlet使用

    3. JSP提交数据和Servlet程序设计 想要将JSP数据提交,主要的方法有form表单方式.url方式和Session方式.将JSP数据传递给后台,form表单显然比较简单方便. 正如上一节中展 ...

  2. 一次使用自定义 Http Header 引发的血案

    一次使用自定义 Http Header 引发的血案 HttpClient Http Header 自定义 nginx 不转发  起因 最近在整理我们产品的 OpenAPI Demo (Python.C ...

  3. New!Devexpress WinForms各版本支持Visual Studo和SQL Server版本对应图

    点击获取DevExpress v19.2.3最新完整版试用下载 本文主要为大家介绍DevExpress WinForms各大版本支持的VS版本和支持的.Net版本图,Devexpress WinFor ...

  4. [人物存档]【AI少女】【捏脸数据】甜美粉色

    点击下载(城通网盘):AISChaF_20191028024804811.png

  5. Linux下nc或scp命令来实现文件传输

    很实用的小技巧, 可以使用nc或者是scp nc命令,转载自:https://www.cnblogs.com/xuybin/archive/2013/09/27/3343098.html 发送端:ca ...

  6. BZOJ 3073: [Pa2011]Journeys Dijkstra+线段树优化建图

    复习一下线段树优化建图:1.两颗线段树的叶子节点的编号是公用的. 2.每次连边是要建两个虚拟节点 $p1,p2$ 并在 $p1,p2$ 之间连边. #include <bits/stdc++.h ...

  7. Python 运算符优先级

    这个表给出Python的运算符优先级(从低到高). 从最低的优先级(最松散地结合)到最高的优先级(最紧密地结合). 这意味着在一个表达式中,Python会首先计算表中较下面的运算符,然后在计算列在表上 ...

  8. 两列布局实现各自独立滚屏,类似与 scrollNav 的功能。

    现在移动端 web 开发越来越靠近 app 的功能.所以两列布局各自都能实现独立滚动也常见.基于固定侧边栏导航,另一侧实现内容展示. 这个功能的核心在于使用 vh 单位. 其中 CSS 的代码是核心点 ...

  9. 记一次newApiHadoopRdd查询数据不一致问题

    现象: +----------+-------+--------+-----+-----+-----+----+----+------+---------+-------+--------+----- ...

  10. JIRA绑定邮箱

    [管理-系统-外发邮件] 之前配置QQ邮箱没有成功,后来使用阿里邮箱一次就成功了 [保存]成功后可以测试一下