一、写在前面

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

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

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

二、元素定位

这部分内容可以说是重中之重了,也是大部分写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这种写法去写,已经不支持老版本写法。

五、写在最后

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

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

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

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

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

最新文章

  1. 为什么基于Windows Server 2008 R2的网络负载均衡(NLB)配置的时候总会报错“主机不可访问”?
  2. JS高程5.引用类型(1)Object类型
  3. nginx负载均衡集群
  4. SSH框架中json传递失败
  5. NBUT 1122 Shameimaru's Candid Camera(水)
  6. extern "C"的用法解析(转)
  7. input 不支持HTML5的placeholder属性
  8. android ndk jni 环境搭建
  9. 开发指南专题八:JEECG微云高速开发平台数据字典
  10. C# 语言规范_版本5.0 (第7章 表达式)
  11. ASP.NET MVC Controller向View传值的几种方式
  12. ⑨的完美冻青蛙(frog)
  13. windbg内存查看(d*)
  14. Qt--自定义Delegate
  15. Django----将列表按照一定的顺序展示
  16. Python 离线工作环境搭建
  17. 《linux内核》课本第五章读书笔记
  18. 【arc074e】RGB Sequence(动态规划)
  19. Java Web(六) EL表达式
  20. Max Factor(素数筛法)题解

热门文章

  1. 3.26省选模拟+NOI-ONLINE
  2. 【活动专辑】Gitee X DolphinScheduler 邀你一起参与 issue 解决赢好礼!
  3. 【安全通报】DolphinScheduler 漏洞情况说明
  4. 成为 Apache 贡献者,从提交第一个简单 PR 开始!
  5. Java精进-手写持久层框架
  6. Python自学笔记6-列表有哪些常用操作
  7. 部署k8s的heapster监控
  8. qt C2144 语法错误,需要在类型前添加;(分号)
  9. KingbaseES R6 集群repmgr.conf参数'recovery'测试案例(一)
  10. 果汁 DI 介绍