软测(五)Web自动化测试下

前言

本章主要详细讲述WebDriver元素定位
注意:所有方法都基于fireFox浏览器



一、WebDriver 元素定位方式(8种)

  1. id
  2. name
  3. class_name
  4. tag_name
  5. link_text
  6. partial_link_text
  7. Xpath
  8. Css
1.id元素定位
  • HTML规定id属性在整个HTML文档中必须是唯一的,id定位就是通过元素的id属性来定位元素;前提:元素有id属性

1)id定位方法:find_element_by_id()

2)示例:在百度页面查找"淘宝网"进行搜索

# 导入selenium
from selenium import webdriver
from time import sleep

# 实例化浏览器

driver = webdriver.Firefox()
#打开百度页面
driver.get("http://www.baidu.com")
#通过find_element_by_id()方法定位元素
driver.find_element_by_id("kw").send_keys("淘宝网")
#点击百度一下按钮
driver.find_element_by_id("su").click()

sleep(3)
driver.quit()
2.name元素定位

1)name定位方法:find_element_by_name()

2)name定位实现:参考id元素定位步骤(只需要把方法更改了并传入name属性值)

3.class_name元素定位

1)class_name定位方法:find_element_by_class_name()

2)class_name定位实现:参考id元素定位步骤(只需要把方法更改并传入class属性值)

4.tag_name定位(一般不使用)

1)tag_name定位方法:find_element_by_tag_name()
返回:符合条件的第一个标签

2)tag_name定位实现:参考id元素定位步骤

5.link_text定位

1)link_text定位方法:find_element_by_link_text()
注意:需要传入a标签全部文本,即完全匹配,否则定位不成功

6.partial_link_text定位
  • partial_link_text定位是对link_text定位的补充,partial_like_text为模糊匹配;link_text
    全部匹配

1)partial_link_text定位方法:find_element_by_partial_link_text()

2)需要传入a标签局部文本-能表达唯一性



二、重点讲解Xpath和Css定位

  • 首先为什么要学习Xpath、CSS定位?
  1. 在实际项目中标签没有id、name、class属性
  2. id、name、class属性值为动态获取,随着刷新或加载而变化
1.Xpath
  • 概念

XPath即为XML Path 的简称,它是一种用来确定XML文档中某部分位置的语言。
HTML可以看做是XML的一种实现,所以Selenium用户可以使用这种强大的语言在Web应用中定位元素。

提示:Xpath为强大的语言,那是因为它有非常灵活定位策略;

  • Xpath定位策略(方式)
  1. 路径-定位
    1). 绝对路径
    2). 相对路径
  2. 利用元素属性-定位
  3. 层级与属性结合-定位
  4. 属性与逻辑结合-定位

Xpath定位 方法:driver.find_element_by_xpath()

1.路径定位(绝对路径、相对路径)

  • 绝对路径:从最外层元素到指定元素之间所有经过元素层级路径 ;如:/html/body/div/p[2]
    注意:绝对路径以/开始

  • 相对路径:从第一个符合条件元素开始(一般配合属性来区分);如://input[@id=‘userA’]
    注意:相对路径以//开始


2.利用元素属性

快速定位元素,利用元素唯一属性;

示例://*[@id=‘userA’]


3 层级与属性结合

要找的元素没有属性,但是它的父级有;

示例://*[@id=‘p1’]/input


4 属性与逻辑结合

解决元素之间个相同属性重名问题

示例://*[@id=‘telA’ and @class=‘telA’]


5 Xpath-延伸

//*[text()=“xxx”] :文本内容是xxx的元素

//*[starts-with(@attribute,‘xxx’)] :属性以xxx开头的元素

//*[contains(@attribute,‘Sxxx’)] :属性中含有xxx的元素



2.CSS定位(在selenium中极力推荐CSS定位,因为它比XPath定位速度要快)
  • 概念
    CSS(Cascading Style Sheets)是一种语言,它用来描述HTML和XML的元素显示样式;在CSS语言中有CSS选择器(不同的策略选择元素),在Selenium中也可以使用这种选择器;

  • CSS定位常用策略 (方式)
  1. id选择器
  2. class选择器
  3. 元素选择器
  4. 属性选择器
  5. 层级选择器

CSS定位 方法:driver.find_element_by_css_selector()


1.id选择器

说明:根据元素id属性来选择

格式:#id 如:#userA <选择id属性值为userA的所有元素>


2.class选择器

说明:根据元素class属性来选择

格式:.class 如:.telA <选择class属性值为telA的所有元素>


3.元素选择器

说明:根据元素的标签名选择

格式:element 如:input <选择所有input元素>


4.属性选择器

说明:根据元素的属性名和值来选择

格式:[attribute=value] 如:[type=“password”] <选择所有type属性值为password的值>


5.层级选择器

说明:根据元素的父子关系来选择

格式:element>element 如:p>input <返回所有p元素下所有的input元素>

提示:> 可以用空格代替 如:p input 或者 p [type=‘password’]


6. CSS延伸

1.input[type^=‘p’] 说明:type属性以p字母开头的元素

2.input[type$=‘d’] 说明:type属性以d字母结束的元素

3.input[type*=‘w’] 说明:type属性包含w字母的元素



三、总结

  • CSS总结

在这里插入图片描述

  • XPath与CSS类似功能对比

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Makasa/article/details/104556643