前置步骤:


  上一篇的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. openssl数据加密

    一.openssl简介 openssl是最著名的开源SSL,其用 C 实现,被广泛应用在基于TCP/Socket的网络程序中. OpenSSL:开源项目 三个组件:openssl: 多用途的命令行工具 ...

  2. HADOOP HA 报错 - 所有 namenode 都是standby --集群报错: Operation category READ is not supported in state standby

    报错: 经过查看集群的jps如下: ==================== hadoop01 jps =================== FsShell ResourceManager Name ...

  3. jsp根据某一行颜色来其他行的颜色

    jsp根据某一行颜色(单选框)来其他行的颜色 <c:choose> <c:when test="${v.color=='黑色' }"> <td sty ...

  4. autoprefixer 处理css3的前缀

    css3书写的时候,有时需要加上前缀,比如“-webkit-*.-moz-*”等等,但可能会写的不完整或者是写错,也很麻烦,那么autoprefixer可以处理这些. autoprefixer是一个后 ...

  5. BZOJ 2219 数论之神 (CRT推论+BSGS+原根指标)

    看了Po神的题解一下子就懂了A了! 不过Po神的代码出锅了-solve中"d-temp"并没有什么用QwQQwQQwQ-应该把模数除以p^temp次方才行. 来自BZOJ讨论板的h ...

  6. git回退错误的提交

    提交代码导致冲突,执行merge后,冲掉其他人的提交.需要reset,并新建分支进行恢复 解决方法: 1.找到最后一次提交到master分支的版本号,即[merge前的版本号] 2.会退到某个版本号 ...

  7. Educational Codeforces Round 26 [ D. Round Subset ] [ E. Vasya's Function ] [ F. Prefix Sums ]

    PROBLEM D - Round Subset 题 OvO http://codeforces.com/contest/837/problem/D 837D 解 DP, dp[i][j]代表已经选择 ...

  8. Count the Buildings ( s1 )

    http://acm.hdu.edu.cn/showproblem.php?pid=4372 题意:n个房子在一条线上(n<=2000),高度分别为1~n,现在需要将房子这样放置:从最左往右能看 ...

  9. Linux网络编程三、 IO操作

    当从一个文件描述符进行读写操作时,accept.read.write这些函数会阻塞I/O.在这种会阻塞I/O的操作好处是不会占用cpu宝贵的时间片,但是如果需要对多个描述符操作时,阻塞会使同一时刻只能 ...

  10. JavaWeb_(Struts2框架)使用Servlet实现用户的登陆

    JavaWeb_(Struts2框架)使用Struts框架实现用户的登陆 传送门 JavaWeb_(Struts2框架)Servlet与Struts区别 传送门 MySQL数据库中存在Gary用户,密 ...