1、定位元素(id、name、class、link、partial link)

(1)find_element_by_id()

用百度定位测试,用firebug查看定位元素 ,输入框的id为“kw”,【百度一下】按钮的id为“su”。

from selenium import webdriver                            #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_id("kw").send_keys("python")   #输入框输入“python”
driver.find_element_by_id("su").click()            #点击【百度一下】按钮

(2)find_element_by_name()

用百度定位测试,用firebug查看定位元素 ,输入框的name为“wd”,【百度一下】按钮没有name属性,这里用id定位,id为“su”。

from selenium import webdriver                          #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_name("wd").send_keys("python") #输入框输入“python”
driver.find_element_by_id("su").click() #点击【百度一下】按钮

(3)find_element_by_class_name()

百度的class属性值是包含空格,用class无法定位百度。这里我改用bing搜索为测试实例,用firebug查看定位元素 ,输入框的class为“b_searchbox”,搜索按钮的class为“”b_searchboxSubmit“”

from selenium import webdriver                                            #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://cn.bing.com/")
driver.find_element_by_class_name("b_searchbox").send_keys("python") #输入框输入“python”
driver.find_element_by_class_name("b_searchboxSubmit").click() #点击【百度一下】按钮

(4)find_element_by_link_text()

find_element_by_link_text()是根据链接的文本来定位。以百度为定位测试,找百度页面“新闻”这个元素

from selenium import webdriver                          #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_link_text("新闻").click() #打开新闻链接

(5)find_element_by_partial_link_text()

find_element_by_partial_link_text()是根据链接的文本包含某个字符来定位。以百度为定位测试,找百度页面“新闻”中的“闻”:

from selenium import webdriver                          #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_partial_link_text("闻").click() #打开新闻链接

2、xpath定位元素

(1)通过绝对路径定位。一般很少用这种绝对路径定位,除非其他定位元素无法准确定位,才会用到。

用百度定位测试,用firebug和firepath查看定位元素 ,输入框的绝对路径为“html/body/div[1]/div[1]/div/div[1]/div/form/span[1]”,【百度一下】按钮的绝对路径为“html/body/div[1]/div[1]/div/div[1]/div/form/span[2]/input”。

from selenium import webdriver                          #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_xpath("html/body/div[1]/div[1]/div/div[1]/div/form/span[1]").send_keys("python") #输入框输入“python”
driver.find_element_by_xpath("html/body/div[1]/div[1]/div/div[1]/div/form/span[2]/input").click()

通过以上代码去执行,找不到输入框位置。是因为输入框定位位置不准确。firebug和firepath只是辅助工具,有时会出错,需要更新手动定位。

所以输入框的绝对路径为“html/body/div[1]/div[1]/div/div[1]/div/form/span[1]/input”,【百度一下】按钮的绝对路径为“html/body/div[1]/div[1]/div/div[1]/div/form/span[2]/input”。

from selenium import webdriver                          #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_xpath("html/body/div[1]/div[1]/div/div[1]/div/form/span[1]/input").send_keys("python") #输入框输入“python”
driver.find_element_by_xpath("html/body/div[1]/div[1]/div/div[1]/div/form/span[2]/input").click()

(2)简化xpath

WebDriver ELement Locator定位神器,可以快速定位。点鼠标右键

a.通过元素属性进行定位-id

from selenium import webdriver                          #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_xpath("//input[@id='kw']").send_keys("python") #输入框输入“python”
driver.find_element_by_xpath("//input[@id='su']").click() #点击【百度一下】按钮

b.通过元素属性进行定位-name

from selenium import webdriver                          #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_xpath("//input[@name='wd']").send_keys("python") #输入框输入“python”
driver.find_element_by_xpath("//input[@id='su']").click() #点击【百度一下】按钮

还有很多定位没有讲,掌握以上定位可以满足工作需求,不需要大家全部掌握。后续我会再补充。

Python+Selenium+Unittest框架使用——Selenium——定位元素(二)的更多相关文章

  1. Python+Selenium+Unittest框架使用——Selenium——模拟操作浏览器(三)

    1.浏览器大小的控制 Set_window_size()是控制浏览器大小 Maximize_window()浏览器全屏显示 from selenium import webdriver #导入sele ...

  2. selenium + python自动化测试unittest框架学习(一)selenium原理及应用

    unittest框架的学习得益于虫师的<selenium+python自动化实践>这一书,该书讲得很详细,大家可以去看下,我也只学到一点点用于工作中,闲暇时记录下自己所学才能更加印象深刻. ...

  3. selenium + python自动化测试unittest框架学习(二)

    1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...

  4. python之unittest框架实现接口测试实例

    python之unittest框架实现接口测试实例 接口测试的方法有很多种,具体到工具有postman,jmeter,fiddler等,但是工具的局限性是测试数据的组织较差,接口的返回工具的判断有限, ...

  5. selenium + python自动化测试unittest框架学习(三)webdriver元素定位(一)

    1.Webdriver原理 webdirver是一款web自动化操作工具,为浏览器提供统一的webdriver接口,由client也就是我们的测试脚本提交请求,remote server浏览器进行响应 ...

  6. selenium + python自动化测试unittest框架学习(三)webdriver元素操作(二)

    上一篇是元素的定位,那么定位元素的目的就是对元素进行操作,例如写入文本,点击按钮,拖动等等的操作 (1)简单元素操作 简单元素操作 find_element_by_id("kw") ...

  7. python selenium --unittest 框架

    转自:http://www.cnblogs.com/fnng/p/3300788.html 学习unittest 很好的一个切入点就是从selenium IDE 录制导出脚本.相信不少新手学习sele ...

  8. python+selenium基础篇,By定位元素

    1.By定位和find_element_by_XXXXXX是一样的,如下图所示,定位元素的方法都是一样的 2.使用By定位代码如下所示 from selenium import webdriver f ...

  9. 一:unittest框架配合selenium工具之CSS_selector定位。

    做了自动化测试这么久了,一直没有梳理到元素定位这一块的内容,其重要性不言而喻.趁着周末有时间,梳理一下. 1,通过id定位 driver.find_element_by_css_selector(&q ...

随机推荐

  1. monkey常用命令实例

    一.常用命令的使用 1.monkey进行压力测试的命令是什么呢? adb shell monkey -p <packagename> <count> eg: adb shell ...

  2. Linux 下的 python 虚拟环境 + vim快捷方式

    day04虚拟环境 https://www.cnblogs.com/pyyu/p/9015317.html 博客 关闭防火墙: systemctl stop firewalld # 关闭防火前 sys ...

  3. eval、exec及元类、单例实现的5种方法

    eval内置函数 # eval内置函数的使用场景:#   1.执行字符串会得到相应的执行结果#   2.一般用于类型转化,该函数执行完有返回值,得到dict.list.tuple等​dic_str = ...

  4. 为什么要花钱学 Python,自学不好吗?

    买了这么多课程,有哪一门是你从头到尾听完,并且能将知识点学以致用的?如果你想成为一名相对优秀的程序员,建议你读完这篇文章,如果愿意可以分享给你的朋友. 2018过去的一年,对大多数互联网人来说,201 ...

  5. C#字符串和ASCII码的转换

    //字符转ASCII码: public static int Asc(string character) { if (character.Length == 1) { System.Text.ASCI ...

  6. MySQL数据库聚合函数

    +++++++++++++++++++++++++++++++++++++++++++标题:MySQL数据库聚合函数时间:2019年2月25日内容:MySQL数据库聚合函数重点:MySQL数据库聚合函 ...

  7. JEECG BOOT

    JEECGBOOT - 开源搜索 - 开源中国https://www.oschina.net/search?scope=blog&q=JEECGBOOT JEECG 基于代码生成器J2EE智能 ...

  8. win 解压安装mysql步骤

    5  安装成功之后,启动mysql时报错: 系统错误2,找不到指定的文件.原因:有的系统安装过MySQL没有卸载干净,或者系统自带精简版的MySQL导致注册表关于MySQL的配置与实际安装路径不一致. ...

  9. centos7之zabbix简单检查之端口监控

    1.创建模板 模板名字可以随便起 2.重点在监控项和触发器上. 3.比如我们创建一个监控25端口号的监控项 net.tcp.service[tcp,,25] 这个选项不是手动写上去的,是需要点击选择. ...

  10. socket传输数据循环多次的性能要好于一次

    今天做了一个测试,测试使用python的socket传输一个588k的数据,当传输过程执行一次时,执行时间为2ms左右.我觉着执行一次的时间并不能说明问题,于是就写了一个循环,循环执行1000次,然后 ...