【基于python实现UI自动化】3.0 selenium

摘要:
通过id样式定位通过class样式定位通过层级css样式定位通过标签属性定位通过Chrome复制css定位在网页F12中,右键copy,选择selectorXpath与CSS定位简单对比定位方式XpathCSS标签//inputinputID定位//input[@id=“input”]或//*[@id=“input”]#inputclass定位//input[@class=“placeholder”]或//*[@class=“placeholder”].placeholder层级定位//div[@class=“skin-search-input”]/input或//[@class=“skin-search-input”]/div.skin-search-input˃input或.skin-search-input˃*属性定位//*[@autocomplete=“off”and@class=“placeholder”]div˃input[name=“q”]学习到这里,相信你们也看得出来XPath和CSS均提供了非常强大和灵活的定位方法。
此文转载自:https://blog.csdn.net/lht3347/article/details/108630023#commentBox
1.0 selenium工具介绍

1.0 selenium工具介绍

2.0 selenium环境搭建

2.0 selenium环境搭建

3.0 selenium元素定位

通过上面的学习,相信你们已试过通过第一个Python自动化脚本运行了,刚开始的时候是不是觉得很高端大尚?
在这里插入图片描述
下面我们一起深入学习selenium WebDriver定位浏览器的页面元素,come on····
在这里插入图片描述

selenium常见8大元素定位

开始之前, 我们先来看下selenium常见的8大元素定位,通过这些信息来定位元素的位置。如下所示:

  1. ID定位

    对应selenium的方法:
    find_element_by_id()
    find_elements_by_id()

  2. Class name定位

    对应selenium的方法:
    find_element_by_class_name()
    find_elements_by_class_name()

  3. name定位

    对应selenium的方法:
    find_element_by_name()
    find_elements_by_name()

  4. 链接文本(精确文本)link text定位

    对应selenium的方法:
    find_element_by_link_text()
    find_elements_by_link_text()

  5. 链接文本(模糊文本)partial link text定位

    对应selenium的方法:
    find_element_by_partial_link_text()
    find_elements_by_partial_link_text()

  6. 标签tag name定位

    对应selenium的方法:
    find_element_by_tag_name()
    find_elements_by_tag_name()

  7. xpath定位

    对应selenium的方法:
    find_element_by_xpath()
    find_elements_by_xpath()

  8. css定位

    对应selenium的方法:
    find_element_by_css_selector()
    find_elements_by_css_selector()

360搜索页面为例,在这个页面上有输入框、搜索按钮和文字超链接等等。自动化要做的就是模拟鼠标和键盘来操作这些元素,下面我们来简单操作下。
在这里插入图片描述

通过ID定位

通过上图,我们可看到输入框input有很多属性,其中就有ID属性,这个属性跟其他属性不一样,就好比我们的身份证号类似,是唯一的。

有些前端开发在编写代码时可能会存在两个ID的值是一样的,主要还是取决前端开发代码的规范性。

对360搜索首页上的输入框与搜索按钮通过ID定位代码如下:
在这里插入图片描述

通过class name定位

通过 class 定位输入框,并输入内容,代码如下:
在这里插入图片描述

通过name定位

输入框的有个name名字,可理解为input输入框的名字。通过 name 定位输入框,并输入内容,代码如下:
在这里插入图片描述

链接文本link text定位

通过超链接精确文本link text 定位超链接文本 “百科”,定位代码如下:
在这里插入图片描述

部分链接文本partial link text定位

通过超链接部分文本(模糊文本)partial link text 定位超链接文本 “导航”,定位代码如下:
在这里插入图片描述

通过tag name定位

输入框input标签在浏览器页面存在很多同样的标签名称,所以定位时,会返回多个input标签的指(返回的数据类型为list)。

通过tag name定位代码如下:
在这里插入图片描述

find_elements_by_tag_name() -----> 返回多个元素值(数据类型为list)
get_attribute(属性名称) ----> 获取标签中属性对应的值

通过Xpath定位

Xpath 是一门在 XML 文档中查找信息和定位元素的语言。

做UI自动化时,可把 HTML 页面看成 XML 去对元素和属性进行遍历定位出所需要的元素。

Xpath绝对路径定位

从最外层的HTML一层一层定位到所属元素位置,每一层之间用/隔开,路径的开始以 / 开头。

通过Xpath绝对路径定位,代码如下:
在这里插入图片描述

Xpath相对路径定位

除了绝对路径定位以外,Xpath还可以通过相关路径的方式去定位页面的元素,路径的开始以//开头。

// 表示在当前页面某标签下

  • 元素标签单属性(多属性)定位
    通过Xpath相对路径单属性(多属性)定位,代码如下:
    在这里插入图片描述

* 表示所有标签名称的统称

  • Xpath层级属性相对路径定位
    通过Xpath层级属性相对路径定位,代码如下:
    在这里插入图片描述

通过Chrome复制Xpath定位

在这里插入图片描述

  • 绝对路径定位:
    在网页F12中,右键copy,选择copy full Xpath
  • 相对路径定位:
    在网页F12中,右键copy,选择full Xpath

通过CSS定位

CSS(Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。

引用于百度百科

总得来说,我们可以这么理解,把HTML看成一个房子,那么CSS就是房子中的装饰(颜色、壁纸、地板等)。

  • 通过 id 样式定位
    在这里插入图片描述
  • 通过 class样式定位
    在这里插入图片描述
  • 通过层级css样式定位
    在这里插入图片描述
  • 通过标签属性定位
    在这里插入图片描述

通过Chrome复制css定位

在这里插入图片描述
在网页F12中,右键copy,选择selector

Xpath 与 CSS 定位简单对比

定位方式XpathCSS
标签//inputinput
ID定位//input[@id=“input”] 或 //*[@id=“input”]#input
class定位//input[@class=“placeholder”] 或 //*[@class=“placeholder”].placeholder
层级定位//div[@class=“skin-search-input”]/input 或 //[@class=“skin-search-input”]/div.skin-search-input > input 或 .skin-search-input > *
属性定位//*[@autocomplete=“off” and @class=“placeholder”]div > input[name=“q”]

学习到这里,相信你们也看得出来XPath 和 CSS 均提供了非常强大和灵活的定位方法。但相比较 CSS 语法更加简洁,学难度可能会大一点。在这里插入图片描述
至于定位的话,就看个人的选择与喜好了,哪个方便就用哪个哈。

结尾

给你心心,点下赞
创作不易,希望本文对你有帮助,动起你们的小手手点下赞哈(一键三连更好),Thanks♪(・ω・)ノ。

免责声明:文章转载自《【基于python实现UI自动化】3.0 selenium》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇V3s录音 交叉编译alsa linux【译】在Asp.Net中操作PDF – iTextSharp列表下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python调用百度OCR识别API实现文字图片识别

先参考:百度ocr识别API文档 ;上面有详细步骤,使用百度账号登录,首次创建新的应用,创建后的应用界面如下: 1.Python环境:Python3.6; 2.安装Python三方库:baidu-aip 3.代码实现,如下实现的是高精度实现方法: from aip import AipOcr def baiduOCR(picfile): # pic...

第二百一十三节,jQuery EasyUI,NumberBox(数值输入框)组件

jQuery EasyUI,NumberBox(数值输入框)组件 功能:只能输入数值,和各种数值的计算 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 NumberBox(数值输入框)组件的使用方法,这个组件依赖 于 ValidateBox(验证框)组件。 一.加载方式 class 加载方式...

代码自动格式化工具【Python——yapf, 前端——Prettier】

Python代码格式化工具Yapf Python将代码格式规范加入语法当中,形成了可读性很高且严格的代码风格。yapf能使您的代码自动格式化为更为标准和规范的代码风格,在大型开发需要同步代码时有重要作用,统一的代码风格可以让任何人更方便的读懂他人代码。 YAPF (Yet Another Python Formatter)是Google开源的一个用来格式...

从零开始的react入门教程(五),了解react中的表单,何为受控组件与非受控组件

壹 ❀ 引 我们在从零开始的react入门教程(四),了解常用的条件渲染、列表渲染与独一无二的key一文中介绍了react中常用的条件渲染操作,比如三元运算符,逻辑运算符等,结合react组件或者react元素,我们能做到很多视图层的切换效果。 除此之外我们也介绍了react中的渲染操作,不同于vue类似框架使用循环指令,react中直接使用数组API达...

python 反射

import timesss##反射:根据字符串的形式去对象(模块)中操作其成员(查找/获取/删除/添加)#根据用户输入内容,导入模块(字符串形式导入模块) inp = input("请输入模块名:") res = __import__(inp) uu = res.md5("123456") print(uu) #字符串方式去模块中查找函数,并执行# g...

Selenium WebDriver问题Internet Explorer保护模式设置问题

在用WebDriver中打开Internet Explorer访问百度的是,报下面错误: org.openqa.selenium.remote.SessionNotFoundException: Unexpected error launching Internet Explorer. Protected Mode settings are not the...