我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素。

元素定位的8种方法:

id、name、class、tag、link、partail_link、xpath、css_selector

1、id定位: find_element_by_id()

从上面定位到的搜索框属性中,有个id="kw"的属性,我们可以通过这个id定位到这个搜索框

代码:

# coding = utf-8

from time import sleep

from selenium import webdriver

# 驱动文件路径

driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'

# 启动浏览器

driver = webdriver.Chrome(executable_path=driverfile_path)

# 打开百度首页

driver.get(r'https://www.baidu.com/')

# 通过id定位搜索框,并输入selenium

driver.find_element_by_id('kw').send_keys('selenium')

# 等待5秒

sleep(5)

# 退出

driver.quit()

2、name定位: find_element_by_name()

3、class定位:find_element_by_class_name()

4、tag定位:find_element_by_tag_name()

我们就知道HTML是通过tag来定义功能的,比如input是输入,table是表格,等等...。每个元素其实就是一个tag,一个tag往往用来定义一类功能,我们查看百度首页的html代码,可以看到有很多div,input,a等tag,所以很难通过tag去区分不同的元素。基本上在我们工作中用不到这种定义方法,仅了解就行。

5、link定位:find_element_by_link_text()

6、partial_link定位:find_element_by_partial_link_text()

有时候一个超链接的文本很长很长,我们如果全部输入,既麻烦,又显得代码很不美观,这时候我们就可以只截取一部分字符串,用这种方法模糊匹配了。

我们用这种方法来定位百度首页的“新闻”超链接。

代码:

# coding = utf-8

from time import sleep

from selenium import webdriver

# 驱动文件路径

driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'

# 启动浏览器

driver = webdriver.Chrome(executable_path=driverfile_path)

# 打开百度首页

driver.get(r'https://www.baidu.com/')

# 通过partial_link定位"新闻"这个链接并点击

driver.find_element_by_partial_link_text('闻').click()

# 等待5秒

sleep(5)

# 退出

driver.quit()

前面介绍的几种定位方法都是在理想状态下,有一定使用范围的,那就是:在当前页面中,每个元素都有一个唯一的id或name或class或超链接文本的属性,那么我们就可以通过这个唯一的属性值来定位他们。但是在实际工作中并非有这么美好,有时候我们要定位的元素并没有id,name,class属性,或者多个元素的这些属性值都相同,又或者刷新页面,这些属性值都会变化。那么这个时候我们就只能通过xpath或者CSS来定位了。

7、xpath定位:find_element_by_xpath()

代码:

# coding = utf-8

from time import sleep

from selenium import webdriver

# 驱动文件路径

driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'

# 启动浏览器

driver = webdriver.Chrome(executable_path=driverfile_path)

# 打开百度首页

driver.get(r'https://www.baidu.com/')

# 通过xpath定位搜索框,并输入selenium

driver.find_element_by_xpath("//*[@id='kw']").send_keys('selenium')

# 等待5秒

sleep(5)

# 退出

driver.quit()

8、CSS定位:find_element_by_css_selector()

这种方法相对xpath要简洁些,定位速度也要快些,但是学习起来会比较难理解,这里只做下简单的介绍。

CSS定位百度搜索框代码:

# coding = utf-8

from time import sleep

from selenium import webdriver

# 驱动文件路径

driverfile_path = r'D:\coship\Test_Framework\drivers\chromedriver.exe'

# 启动浏览器

driver = webdriver.Chrome(executable_path=driverfile_path)

# 打开百度首页

driver.get(r'https://www.baidu.com/')

# 通过CSS定位搜索框,并输入selenium

driver.find_element_by_css_selector('#kw').send_keys('selenium')

# 等待5秒

sleep(5)

# 退出

driver.quit()

xpath和css定位元素的讲解示例代码:

1

2

3

4 ...........

5

6

7

8

9

10

这是一段实例文本

11

12        

13         

文本2

14        

15

16

17

18

一般在浏览器自带的开发者工具中,使用$x("xpath表达式")验证xpath的正确性,$$("css Selector")验证css选择器的正确性。

一、xpath的定位方法:$x("xpath路径")

A、$x( "//元素名[@属性名='属性值'] [序号]" )               ——使用元素的开始标签中的 “属性” 来定位

例如:定位

元素:$x("//div[@name='demo']")

B、$x( "//元素名[text()='文本内容'] [序号]" )       ——使用开始标签和结束标签之间的文本内容来定位

例如:定位

元素:$x("//p[text()='这是一段实例文本']")

1、使用“//”表示在整个页面的所有元素中进行全路径的查找(常用“//”来减少中间层级的元素,用于相对路径查找,以//开头,表示在文档任意层级位置开始查找,表达式中的//,则表示在当前层级内任意位置开始查找,类比于在某个文件夹下搜索文件。),

2、如果换成“/”表示在当前指定的元素中进行查找(用于绝对路径查找,以/html开头的XPath表达式从HTML文档的最上级元素开始逐层查找。类比于在windows文件系统中通过层层打开文件夹找文件。),例如:

定位

元素:$x("/html/body/div")

定位

元素:$x("/html/body/div/span1/p")

3、也可以“//”和“/”混合使用:

定位

元素:$x("//body/div//p[text()='文本2']")

a、定位元素时的路径,除了使用“=”方式,也可以使用“contains”方式(对应的属性值或者文本内容可以只包含其中一部分,相当于模糊查询)。

语法是:contains(@属性名,'属性值的一部分')   或者   contains(text(),'文本内容的一部分')

查找

元素:  $x("//div[contains(@name,'de')]")    或者  $x("//p[contains(text(),'这是')]")

b、类似于contains的用法还有:stars-with等等,

strats-with(@属性,"属性值的一部分"):表示属性以某些内容开头

1、某一个元素定位成功后还可以使用  “/” 、"//"   接上后续的子孙元素。

2、在xpath当中,下标的序号从1开始。

3、$x()获取出来的内容会是一个数组存放的形式,可以通过下标来进行选择,下标从0开始。

假设上述的和的名称都是时,那么 $x("//body/div/][1]")  和 $x("//body/div/]")[0] 都是定位到的第一个元素。

二、css选择器的定位方法:$("css选择器")和 $$("css选择器")

css:cascading style sheet 层叠样式表,用于给HTML当中的元素指定样式。

css选择器的定位方法:$("css选择器")和 $$("css选择器") 的区别:

$(“selector”)找到的元素只会匹配selector的第一个元素,

而 $$("selector")匹配到的是所有符合selector的元素的数组。

html的元素层级:父元素、子元素、祖宗元素、子孙元素、兄弟元素

“=”也可以搭配 “ ^ ” 、" $ " 或者 " * "使用,

如:E[attr^='value'] 表示以value属性中开头的元素E;

E[attr$='value'] 表示以value属性中结尾的元素E;

E[attr*='value'] 表示属性中包含value的元素E;

css选择器中,  " selector1  selector2 "的空格相当于xpath中的“//”,

css选择器中“selector1 > selector2”的“>”相当于xpath中的“/”。

三、元素定位成功后的DOM操作语法

定位元素后,可以通过 “.” 运算符获取元素中的属性:

innerHTML:获取元素中包含其他子元素在内的所有内容

innerText:获取元素中所有的文本

text:获取元素中的文本,适用范围比innertext少,有些元素不支持。

value:通过设置input或者其他输入框中的值,来调试网页

在HTML中某些事件发生时,可以调用JavaScript脚本来处理事件响应。

例如: Try it

常用的一些事件属性比如:onclick、onblur、onfocus、oninput等等。

通过DOM语法,也可以对HTML页面中的元素进行调试和操作。常用的dom语句和操作可以在浏览器的console中进行调试,这也是进行UI自动化测试的手段之一。

可以操作的DOM语法:

innerHTML:获取元素中包含其他子元素在内的所有内容

innerText:获取元素中所有的文本

text:获取元素中的文本,适用范围比innertext少,有些元素不支持。

value:通过设置input或者其他输入框中的值,来调试网页

click():通过点击方法,操作对应的元素。

标签:xpath,web,定位,元素,driver,自动化,css,属性

来源: https://www.cnblogs.com/zzp-biog/p/10171750.html

自动化html定位视频教程,web自动化——元素定位相关推荐

  1. 自动化(二)——八种元素定位方法

    自动化(二) 一.元素定位 1)如何元素定位 二.元素定位方式 1)id定位 2)name定位 3) class_name定位 4) tag_name定位 5) link_text以及partial_ ...

  2. web页面-元素定位

    web自动化测试核心内容: 元素定位 网页操作 等待 pytest + selenium 项目实战 1.为什么要元素定位  元素定位是为了操作浏览器,如输入内容,点击按钮等,就是手工做的,自动化都可以 ...

  3. python android自动化元素定位_appium+python android元素定位

    image ## text属性的方法 `driver.find_element_by_android_uiautomator(``'new UiSelector().text("Custom ...

  4. python+selenium自动化(四)__八大元素定位之class_name、tag_name、partial_link_text、css_selector

    selenium八大元素定位(二) 上节讲了4种定位ID.NAME.LINK_TEXT.XPATH,这节继续学习剩下的4种元素定位方式 1.通过class_name定位 我们需定位上图中的" ...

  5. python自动化(三)web自动化:2.web自动化工具selenium讲解

    一.selenium简介 1.什么是selenium Selenium是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, ...

  6. python怎么鼠标定位id_Selenium八种元素定位方法(Python)

    前言: 我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素.工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素.那么我们怎么来定位他们呢? 在学 ...

  7. 测试使用linux日志定位BUG,Web测试中定位bug方法

    在web测试过程中,经常会遇到页面中内容或数据显示错误,甚至不显示,第一反应就是BUG,进一步了解这个BUG的问题出在那里,是测试人员需要掌握的,可以简单的使用浏览器自带开发者工具.数据库工具配合去排 ...

  8. selenium定位php,selenium之元素定位

    原文:http://blog.sina.com.cn/s/blog_915cefbf0101sah4.html id:findElement(by.id("id")) name:f ...

  9. web自动化元素定位

    自动化测试:广义上讲一切使用代码或程序来辅助或代替人工测试的行为都认为是自动化测试. 自动化测试作用:提高工作效率,释放人力,可以把人从一些重复性的工作中解放出来. 应用环节:主要应用在回归测试和兼容 ...

最新文章

  1. python数据池连接PG
  2. java四种xml_Java中四种XML解析技术
  3. python-68:BS4获取多个标签的文本
  4. gitbook安装与使用之windows下搭建gitbook平台
  5. aix升级openssh_AIX5.3如何安装openssh | 学步园
  6. 带Spring Boot的GWT
  7. thinkphp json_原创干货 | Thinkphp序列化合总
  8. linux 有线网络管理,uos linux网络管理
  9. java - 求素数
  10. Python读写txt
  11. AngularJs的UI组件ui-Bootstrap分享(七)——Buttons和Dropdown
  12. 5.6 Transformer-XL讲解 意境级
  13. 辞退可以,暴力不行!
  14. 锁定和隐藏Excel公式
  15. 计算机职业资格证书介绍(大全)
  16. 计算机上机考试自我检查800字,检讨书自我反省800字考试没考好
  17. 多所高校通知:这种情况取消考研复试资格!
  18. UVM-- Sequencer和driver
  19. 雅思口语练习必备100个经典句子
  20. 【科研导向】Outer Product-based Neural Collaborative Filtering (ConvNCF)基于外积的神经协同过滤<论文理解代码分析>

热门文章

  1. 气垫车-市场现状及未来发展趋势
  2. pku1222(高斯消元1)
  3. select低级错误
  4. android 删除照片,如何恢复在Android上删除的照片
  5. 实验一:如何创建愿景,新手详解,多图,图解,详细
  6. IOS SDK详解之KVC
  7. linux 下安装ATI 显卡驱动
  8. 【计算机网络】【应用层-1】
  9. 中国杀毒软件业应该向国际厂商学什么?
  10. 仿百度壁纸客户端(六)——完结篇之Gallery画廊实现壁纸预览已经项目细节优化