python学习的一个定位_python学习之——selenium元素定位

web自动化测试按步骤拆分,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告。

其中定位元素尤为关键,此篇是使用webdriver通过页面各个元素的属性值定位对象。

步骤:

一:环境准备

1.浏览器选择:Firefox

2.安装插件:Firebug和FirePath(设置》附加组件》搜索:输入插件名称》下载安装后重启浏览器)

3.安装完成后,页面右上角有个小爬虫图标

4.快速查看xpath插件:XPath Checker这个可下载,也可以不用下载

5.插件安装完成后,点开附加组件》扩展,有firebug、firepath、xpath checker已经安装完成

二:元素定位

通过firebug查看对象的属性值,根据webdriver提供的元素定位方法,定位。

其中:selenium的webdriver提供了八种基本的元素定位方法,前面六种是通过元素的属性来直接定位的,后面的xpath和css定位更加灵活。

1.通过id定位:find_element_by_id()

2.通过name定位:find_element_by_name()

3.通过class定位:find_element_by_class_name()

4.通过tag定位:find_element_by_tag_name()

5.通过link定位:find_element_by_link_name()

6.通过partial_link定位:find_element_by_partial_link_name()  超链接名称模糊匹配方式

7.通过xpath定位:find_element_by_xpath()

8.通过css定位:find_element_by_css_name()

通过xpath定位:

1.如果一个元素它既没有id、name、class属性也不是超链接,或者说它的属性很多重复的,这个时候就可以用xpath解决

2.xpath是一种路径语言,firepath插件查看一个元素的xpath,进行使用定位

通过css定位:

1.css是另外一种语法,比xpath更为简洁,先学会如何用工具查看

2.打开FirePath插件选择css,查看使用

实践:

#coding=utf-8

# selenium的webdriver元素定位

from selenium import webdriver

import time

driver = webdriver.Firefox()

driver.get("https://www.baidu.com/")

time.sleep(5)

driver.find_element_by_id("kw").send_keys("python")

time.sleep(3)

driver.find_element_by_id("kw").clear()

time.sleep(3)

#点击百度首页的超链接

driver.find_element_by_link_text("百度首页").click()

time.sleep(3)

#点击登录按钮

driver.find_element_by_xpath(".//*[@id='u1']/a[7]").click()

time.sleep(3)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396506.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Invoker

Invoker 是实体,dubbo外其他对象的转化。转载于:https://www.cnblogs.com/gtaxmjld/p/9786894.html

如何在开源社区贡献代码_如何在15分钟内从浏览器获得您的第一个开源贡献

如何在开源社区贡献代码Matt Mullenweg, founder of Automattic, recently offered this advice to aspiring developers: “Contribute to open source.”Automattic的创始人Matt Mullenweg最近向有抱负的开发人员提供了以下建议 :“ 致力于开源。 ” Mullenweg —…

小心情。

从一开始学习html到现在的nodejs,也有段时间了,那个时候什么都不知道,记得一两年之前还沉迷在一些网络技术的圈子里面,每天看着那些大牛,感觉都很是厉害,每一项技术总是那样的让我着迷,从易语言…

一、win7下安装yii2

作者:PHP学习网 出处:http://www.viphper.com/?p1159 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 之前在liunx上安装过yii…

js获取浏览器滚动条距离顶端的距离

js获取浏览器滚动条距离顶端的距离 一、jQuery获取的相关方法 jquery 获取滚动条高度获取浏览器显示区域的高度 :$(window).height(); 获取浏览器显示区域的宽度 :$(window).width(); 获取页面的文档高度 :$(document).height(); 获取页面的文…

vs dll必须和exe在同一个目录_Win10系统丢失 .dll 文件的三种解决方案教程

有时候开机或打开一个软件时,系统会提示无法启动程序,这是怎么回事呢?这是因为计算机丢失某个或某些dll文件,由于系统本身不存在这些运行库文件,需要进行添加才能使用该软件。方法一:下载丢失的.dll文件&am…

datagrid页面获取表单一条数据的例子

【问题背景】 最近在做ITOO考评的时候想从页面获取表单选中的数据: 【代码】 在数据网格(datagrid)组件包含两种方法来检索选中行数据: getSelected:取得第一个选中行数据,如果没有选中行,则返回…

utf-8转换gbk代码_将代码转换为现金-如何以Web开发人员的身份赚钱并讲述故事。...

utf-8转换gbk代码by Kurt由库尔特 将代码转换为现金-如何以Web开发人员的身份赚钱并讲述故事。 (Turning code to cash — How to make money as a Web Developer and live to tell the tale.) So you just learnt to code. You’re eager and anyone who can’t code thinks …

Spring+SpringMVC+MyBatis+easyUI整合基础篇(十)SVN搭建

前言 前面一篇文章讲了一下版本控制,但其实这一篇并没有打算讲细节的,感觉应该自己去动手弄一下,后来考虑了一下,版本控制真的挺重要的,如果自己实在搭建不好反而不去使用的话,真的有点可惜,当然…

AHK-UMSS框架 (AHK通用修饰键解决方案,任何键都是修饰键)

AHK-UMSS框架 (AHK通用修饰键解决方案,任何键都是修饰键) 1 #Warn2 #NoEnv ; # 禁用环境变量检查:不检查空变量是否为"环境变量",可以极大地提高效率3 #Hotstring EndChars ◎ ; # 热字串终止符号设置:只把空格作为终止符,(文档上所说是不能单独用空格的…

flask-sqlalchemy mysql_Flask SQLAlchemy连接到MySQL数据库

设置代码:我正在构建一个带有AngularJS前端的基本Flask应用程序,目前我需要连接到我用Godaddy phpmyadmin托管的MySQL数据库。这是我的一部分__init__.pyfrom flask import Flaskfrom flask.ext.sqlalchemy import SQLAlchemy# Create instnace called a…

有没有编码的知识图谱_没有人告诉您关于学习编码的知识-以及为什么如此困难...

有没有编码的知识图谱by Joyce Akiko通过乔伊斯明子 没有人告诉您关于学习编码的知识-以及为什么如此困难 (What Nobody Tells You About Learning To Code — And Why That Makes It So Hard) Are you familiar with the article Why Learning to Code is So Damn Hard?您是…

Node.js之HTPP URL

几乎每门编程语言都会包括网络这块,Node.js也不例外。今天主要是熟悉下Node.js中HTTP服务。其实HTTP模块是相当低层次的,它不提供路由、cookie、缓存等,像Web开发中不会直接使用,但还是要熟悉下,这样也方便以后的学习。 一、统一资源标识符URL 这个是非常…

串口数据波形显示_【专题教程第6期】SEGGER的J-Scope波形上位机软件,RTT模式波形上传可飙到500KB/S...

【专题教程第6期】SEGGER的J-Scope波形上位机软件,RTT模式波形上传速度可狂飙到500KB/S左右说明:1、在实际项目中,很多时候,我们需要将传感器或者ADC的数值以波形的形式显示。通常的解决办法是用串口上位机,USB接口上位…

JavaScript-基础入门.0014.JavaScript内置对象

2019独角兽企业重金招聘Python工程师标准>>> 简单介绍: 说明: 内置对象就是不依赖宿主环境在程序执行之前已经存在的对象,不必显式的实例化内置对象,前面已经介绍了大部分内置对象,而Global和Math两个单体内置对象比较特殊,所以单独讲. Global对象: 说明: Js中不属于…

Java中字符串连接符(+)和append的区别

参考链接:https://www.jianshu.com/p/849f1d443b3a 文章结构: 第一部分:对的原理进行分析 第二部分: 和 append 循环对比(贴出代码,以及分别循环后的反编译字节码,来对两者进行对比)…

百度seo排名点击器_SEO整站优化思路 - 百度seo排名点击

原出处:超级排名系统原文链接:SEO整站优化思路 - 超级排名系统整站优化的大体思路包括哪些?下面超级排名系统小编详细给大家讲解下:一、建站优化我们在建立网站之前与建立网站的时候需要做的优化,包括标题优化、描述关…

unity 天空盒_Unity自定义可编程渲染管线(SRP)(二)——编写第一个自定义SRP

一句话描述,我们可以把SRP分解成两个部分,分别是SRP Asset,SRP Instance。SRP AssetSRP Asset是一个Unity Asset文件,用来存储渲染管线的特定配置信息,包含的信息有:游戏物体是否应该投射阴影;使…

构建node.js基础镜像_在Android上构建Node.js应用程序

构建node.js基础镜像by Aurlien Giraud通过AurlienGiraud 在Android上构建Node.js应用程序 (Building a Node.js application on Android) 第2部分:Express和NeDB (Part 2: Express and NeDB) In Part 1 we saw how to use Termux, a Terminal emulator and Linux …

【design pattern】工厂方法模式和抽象工厂模式

前言 设计模式分为三大类: 创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式; 结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式; 行为型模式&#xff1…