一、写在前面

今天一实习生小孩问我,说哥你自动化学了多久才会的,咋学的?

自学三个月吧,真的是硬磕呀,当时没人给讲!

其实,学什么都一样,真的就是你想改变的决心有多强罢了。

二、元素定位

这部分内容可以说是重中之重了,也是大部分写web自动化的同学,必会入门技能之一了。

1、常见八种定位元素方法

我们还是直接来看源代码吧,示例如下:

# Licensed to the Software Freedom Conservancy (SFC) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The SFC licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License. """
The By implementation.
""" class By:
"""
Set of supported locator strategies.
""" ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"

2、根据id定位元素

driver.find_element(By.ID,"kw")

3、根据xpath定位元素

driver.find_element(By.XPATH, '//*[@id="kw"]')

4、根据css定位器定位元素

driver.find_element(By.CSS_SELECTOR, '#kw')

5、根据name属性值定位元素

driver.find_element(By.NAME, 'wd')

6、根据class_name类名定位元素

driver.find_element(By.CLASS_NAME, 's_ipt')

7、根据链接文本定位元素

driver.find_element(By.LINK_TEXT, 'hao123')

8、根据部分链接文本定位元素

driver.find_element(By.PARTIAL_LINK_TEXT, 'hao')

9、根据标签名定位元素

driver.find_element(By.TAG_NAME, 'input')

三、find_element与find_elements区别

  • find_elemnet:定位到是一个对象,定位不到则报错。
  • find_elemnets:定位到是一个含元素的列表,定位不到是一个空列表。

四、值得关注的问题

1、举个栗子

# 这句运行直接报错
driver.find_element_by_id('kw').send_keys('python')
# 这句就正常
driver.find_element(By.ID,"kw").send_keys(u"久曲健 博客园")

2、为什么报错

来吧,还是直接看源代码学习,如下所示:

不难看出,最新版本只能通过find这种写法去写,已经不支持老版本写法。

五、写在最后

相信大家和我一样,基本都喜欢白嫖别人的教程,把珍藏多年的教程翻出来学了起来!

看到这,你肯定会说,六哥,你居然也这样吗,那是必然的!!

细心点,你会发现,你收藏的教程或者学习视频都过时了,对,你没看错,它就是过时了,!

虽然元素定位很简单,但是细致很重要,光看不动手实践,又怎么会发现问题呢?

我是六哥,如果觉得写的还不错,请继续关注我,并帮忙转发文章到朋友圈,你的每一次转发,对我都很重要!

Selenium+Python系列(二) - 元素定位那些事的更多相关文章

  1. selenium+python自动化之元素定位

    自动化按步骤拆分的话,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇接下来讲基本的八种元素定位方法.说的通俗一点,就是教大家找对象. ...

  2. [小北De编程手记] : Lesson 03 - Selenium For C# 之 元素定位

    无论哪一种自动化测试的驱动框架(基于B/S,桌面应用,还是手机App).都应当具有一套优秀的元素定位技术.通常的自动化测试流程也可以简单的归结为是一个从被测试程序中识别或是定位元素以及执行操作和验证元 ...

  3. Selenium webdriver 学习总结-元素定位

    Selenium webdriver 学习总结-元素定位 webdriver提供了丰富的API,有多种定位策略:id,name,css选择器,xpath等,其中css选择器定位元素效率相比xpath要 ...

  4. 关于selenium的8种元素定位

    selenium中有八种元素定位,分别是:id,name,class_name,tag_name,link_text.partial_link_text.xpath.css 简单的定位可以用 id.n ...

  5. python + selenium相关事件和元素定位

    女友由于工作上的失误,将公司RDM中的某一字段的2000条数据给删除了.....就算是重新添加字段,但是与其他数据的关联性已经不在了.由于每天的数据修改量大,有关部门不愿意恢复数据库,因此只能一条条的 ...

  6. Selenium with Python 003 - 页面元素定位

    WebUI自动化,首先需要定位页面中待操作的元素,然后进行各种事件操作,这里我们首先介绍Selenium Python 如何定位页面元素,WebDriver 提供了一系列的方法. 定位单个页面元素(返 ...

  7. selenium+java二元素定位

    页面元素定位是自动化中最重要的事情, selenium Webdriver 提供了很多种元素定位的方法.  测试人员应该熟练掌握各种定位方法. 使用最简单,最稳定的定位方法. 自动化测试步骤 定位元素 ...

  8. Selenium基本用法以及元素定位

    一.Selenium 简介 Selenium是ThroughtWorks公司一个强大的开源Web功能测试工具系列,提供一套测试函数,用于支持Web自动化测试.函数非常灵活,能够完成界面元素定位.窗口跳 ...

  9. selenium python 一些操作和定位收集

    (—)滚动条操作 python中selenium操作下拉滚动条方法汇总 selenium_webdriver(python)控制浏览器滚动条 selenium+Python(select定位) Sel ...

随机推荐

  1. MySQL8.0错误日志Error log

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 理论知识 错误日志内容 错误日志包含mysqld启动和关闭的时间信息,还包含诊断消息,如服务器启动和关闭期间以及服务器运行 ...

  2. java-运算符以及简单运用

    运算符: 1)赋值运算符:= 2)算术运算符:+-*/%,++,-- 3)关系运算符:>,<,>=,<=,==,!= boolean 4)逻辑运算符:&&,|| ...

  3. 你必须学UML之理论篇

    1.前言 对于当前社会背景下从事软件开发的工作者而言,"写代码"实际上并不是唯一的工作.特别在一些中小型的企业当中,这些企业往往对于开发者的要求,不单单停留在写代码完成相应功能上, ...

  4. 【java】学习路径32-绝对路径与相对路径

    获取文件路径的时候,我们发现有两个方法,getAbsolutePath和getPath两个方法. 前者是获取绝对路径,后者是相对路径. 绝对路径指的是完整路径,从盘符开始. 相对路径指的是从java当 ...

  5. 简单创建一个SpringCloud2021.0.3项目(三)

    目录 1. 项目说明 1. 版本 2. 用到组件 3. 功能 2. 上俩篇教程 3. Gateway集成sentinel,网关层做熔断降级 1. 超时熔断降级 2. 异常熔断 3. 集成sentine ...

  6. SpringBoot集成Thymeleaf发送Html邮件报错

    由于业务需求需要使用Thymeleaf作为模板发送Html邮件,开发调试过程中发生以下错误 org.thymeleaf.exceptions.TemplateInputException: Error ...

  7. JavaScript之数组常用API

    这篇文章主要帮助大家简单理解数组的一些常用API用法,许多小伙伴常用方法记不住?别急,看完下面的介绍您一定就会明白各个方法是如何用的了.该文章适合新手小白看,大佬可以多多指点️! 1.数组的创建以及A ...

  8. KingbaseES 中实现mysql的from_days和to_days

    mysql中两个函数的说明: TO_DAYS(date)给出一个日期date,返回一个天数. FROM_DAYS(N)给出一个天数N,返回一个DATE值. 两个函数比较计算的日期都是 0000-01- ...

  9. 如何查找并简单分析core文件

    当系统发生coredump时,通常需要通过分析core文件来定位问题所在,但实际工作中,有时却发现core 文件找不到,或者core文件被删除了. 一.core文件没有生成 KINGBASE core ...

  10. 读完 RocketMQ 源码,我学会了如何优雅的创建线程

    RocketMQ 是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时.高可靠的消息发布与订阅服务. 这篇文章,笔者整理了 RocketMQ 源码中创建线程的几点技巧,希望大家读完之后,能 ...